diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 8a314f81..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Build - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - client: - name: Client (${{ matrix.os }}) - runs-on: ${{ matrix.os }} - - strategy: - matrix: - node-version: - - 20.x - os: - - ubuntu-20.04 - - windows-2019 - include: - - os: ubuntu-20.04 - script: build-release-linux - - os: windows-2019 - script: build-release - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - - - name: Install dependencies - working-directory: client - run: npm ci - - - name: Build - working-directory: client - run: npm run ${{ matrix.script }} diff --git a/.github/workflows/build_package.yml b/.github/workflows/build_package.yml index 8f1f9a26..8e868f65 100644 --- a/.github/workflows/build_package.yml +++ b/.github/workflows/build_package.yml @@ -2,7 +2,7 @@ name: Build & package on: push: - branches: [ "main" ] + branches: [ "main", "release-candidate" ] permissions: contents: read @@ -33,6 +33,13 @@ jobs: - name: Upload a Build Artifact uses: actions/upload-artifact@v3.1.3 with: - name: latest - path: installer/Output/*.exe + name: development_build_not_a_release + path: ./package + + - name: Upload a Build Artifact + uses: actions/upload-artifact@v3.1.3 + with: + name: zip_only_package + path: ./zip + diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 2a1a7568..8ef7722b 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -23,12 +23,12 @@ jobs: uses: actions/setup-node@v2 - name: Install dependencies - run: npm ci - working-directory: ./client + run: npm install + working-directory: ./frontend/website - name: Create the docs directory locally in CI - run: npx typedoc --out ../docs/client @types/*.d.ts src/**/*.ts - working-directory: ./client + run: npx typedoc --out ../../docs/website @types/*.d.ts src/**/*.ts + working-directory: ./frontend/website - name: Install Doxygen uses: ssciwr/doxygen-install@v1 diff --git a/.gitignore b/.gitignore index 8a0e4af3..820ecd30 100644 --- a/.gitignore +++ b/.gitignore @@ -1,29 +1,42 @@ bin .vs x64 -/src/vcpkg_installed -*.user Output -*.aps node_modules -/client/TODO.txt -/client/public/javascripts/bundle.js -!client/bin -/client/public/plugins -/client/plugins/controltips/index.js hgt -/client/public/databases/units/old -/client/plugins/databasemanager/index.js + +/backend/vcpkg_installed + +/frontend/server/TODO.txt +/frontend/server/public/javascripts/bundle.js +/frontend/server/public/plugins +/frontend/server/plugins/controltips/index.js +/frontend/server/public/databases/units/old +/frontend/server/plugins/databasemanager/index.js /src/html /src/latex -client/public/stylesheets/leaflet/leaflet-gesture-handling.css -client/public/javascripts/leaflet.nauticscale.js -client/public/javascripts/L.Path.Drag.js -/installer/archive/Scripts -/installer/archive/Mods -/installer/installer/DCSOlympus*.exe + +/package +/build +/DCS Olympus backups +/zip + +*.user +*.aps L.Path.Drag.js leaflet-gesture-handling.css +leaflet.nauticscale.js +leaflet.css package-lock.json + +!frontend/server/bin +/mock-dcs +/frontend/setup +frontend/server/public/plugins/controltipsplugin/index.js +frontend/website/plugins/controltips/index.js +/frontend/server/public/maps +*.pyc +/scripts/**/*.jpg +manager/manager.log diff --git a/DCS Olympus Manager.lnk b/DCS Olympus Manager.lnk new file mode 100644 index 00000000..109a12b4 Binary files /dev/null and b/DCS Olympus Manager.lnk differ diff --git a/INSTRUCTIONS.txt b/INSTRUCTIONS.txt new file mode 100644 index 00000000..9a6c9677 --- /dev/null +++ b/INSTRUCTIONS.txt @@ -0,0 +1,59 @@ + _____ _____ _____ ____ _ + | __ \ / ____|/ ____| / __ \| | + | | | | | | (___ | | | | |_ _ _ __ ___ _ __ _ _ ___ + | | | | | \___ \ | | | | | | | | '_ ` _ \| '_ \| | | / __| + | |__| | |____ ____) | | |__| | | |_| | | | | | | |_) | |_| \__ \ + |_____/ \_____|_____/ \____/|_|\__, |_| |_| |_| .__/ \__,_|___/ + __/ | | | + |___/ |_| + +{{OLYMPUS_VERSION_NUMBER}} + +========================================== +INSTALLATION INSTRUCTIONS + +1) Close any applications which may interfere with installation, including Digital Combat Simulator (DCS) and previous versions of Olympus. + +2) If you DO NOT have Olympus already installed, SKIP THIS STEP. If you have already installed Olympus, do the following: + NOTE: If you made any changes to your unit databases or mods.lua file (e.g. to support a third party mod) make a backup of the edited files before proceeding or changes will be lost; + a) If you installed DCS Olympus v1.0.3 using the installer, simply remove it using Windows's "Add or remove programs" application. + b) If you installed DCS Olympus v1.0.3 using the archived version, remove it by deleting the "...\Mods\Services\Olympus" folder. Do this for every DCS instance you installed Olympus in. + Remember to delete any shortcuts you created. Don't worry, they will be created automatically again by the installation script provided in this package. + +3) Create a folder named "DCS Olympus" in your "Saved Games" directory and extract all the contents of the downloaded package into it. + NOTE: + a) Do not extract the contents of the package directly in your Saved Games folder or in your DCS Saved Games folder. + b) Unlike previous version of Olympus, it is no longer necessary to copy the packaged files into each DCS instance folder. + +4) Execute the "installer.bat" script by double-clicking on it. It is located in the folder you created in step 3. Wait for the installation script to complete. Installation may take a couple of minutes, after which the Manager will start automatically. + NOTE: depending on your Windows configuration, the script may be called "installer" (without .bat at the end). + +5) The Olympus Manager will open. This will allow you to add/remove Olympus to individual DCS instances. + Use the Olympus Manager and follow the instructions to install and setup Olympus. + +6) Start DCS and run a mission. Make sure it is UNPAUSED. + +7) Open Olympus via the shortcut and login using any username and the Game Master password set using the Manager. (NOTE: not your DCS server password). + Local installation: run the client from the provided desktop shortcut or start it using the "View and manage instances" page of the Manager. + Dedicated server: users must first start the Olympus server from the provided desktop shortcut or using the "View and manage instances" page of the Manager. + Then log in using any browser and visiting "http:\\:" (frontend port is 3000 by default, but can be edited using the Manager) + +8) You can use the manager at any time to change the ports and/or passwords. If you do, REMEMBER TO RESTART OLYMPUS AND DCS. + + +NOTES: +a) when launching the Manager you will be prompted to allow Electron to create a firewall rule. This is optional and can be denied without effect on the operation of the Manager; +b) if you are using Olympus on a dedicated server with a router, you must enable port forwarding on the frontend port (3000 by default); +c) unlike Olympus v1.0.3, running the netsh command is no longer required. It is also no longer required to create firewall rules or port forwarding for the backend port. (Optional) If you already performed this steps in the past you can delete the firewall and netsh rules. + + +========================================== +UPDATING INSTRUCTIONS + +IF YOU ARE UPDATING FROM DCS OLYMPUS v1.0.3, FOLLOW THE "INSTALLATION INSTRUCTIONS". + +To update your Olympus installation you have two options: +a) download the new package from the GitHub releases page, delete the old unpacked package folder, then follow the INSTALLATION INSTRUCTIONS; +b) run the Olympus Manager. If an update is available you will be given the option to automatically update Olympus from there. + +For either options a) or b), remember to close any applications which may interfere with installation, including Digital Combat Simulator (DCS) and previous versions of Olympus. \ No newline at end of file diff --git a/README.md b/README.md index 261255e9..4748568c 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,6 @@ # DCS Olympus -![alt text](https://github.com/Pax1601/DCSOlympus/blob/main/client/sample.png?raw=true) - ### What is this? DCS: Olympus is a free and open-source mod for DCS that enables dynamic real-time control through a map interface. The user is able to spawn units/groups, deploy a variety of effects such as smoke, flares, or explosions, and waypoints/tasks can be given to AI units in real-time in a way similar to a classic RTS game. @@ -23,18 +21,30 @@ Even better it requires no client mods be installed if used on a server The full feature list is simply too long to enumerate in a short summary but needless to say Olympus offers up a lot of unique gameplay that has previously not existed, and enhances many other elements of DCS in exciting ways ### Installing DCS Olympus -A prebuilt installer will soon be released and available here +Check the [Wiki](https://github.com/Pax1601/DCSOlympus/wiki) for installation instructions # Frequently Asked Questions -### Can I join up and help out with the project? ### -We are currently running towards first release in the very near future so we are not looking to add more people to the core team for the moment. However that does not mean we are not open to collaborations and help going forward, if you want to help for now we are committed to the free and open source model so feel free to check out the github, familiarize yourself with the project and maybe even start submitting pull requests for open issues. -Post-release we will be more interested in developing partnerships/collaborations with other teams/projects and potentially bringing in more team members, we will update this after release on how that will be managed! +### I need troubleshooting guidance, please help? ### +Read through the [Installation Guide](https://github.com/Pax1601/DCSOlympus/wiki) to ensure you have setup Olympus correctly. + +Read through [Setup Troubleshooting](https://github.com/Pax1601/DCSOlympus/wiki/Setup-Troubleshooting) for common issues and solutions. + +Read through the [Olympus User Guide](https://github.com/Pax1601/DCSOlympus/wiki/2.-User-Guide) to learn how to use Olympus. + +If you're still having issues after trying the steps above, please post in the ⁠community-support channel with the following: + +A detailed description of your issue +Your Olympus log file \user home folder\AppData\Local\Temp\Olympus_log.txt for some it might be in \DCS Saved Games folder\Logs\Olympus_log.txt +Your DCS log file \DCS Saved Games folder\Logs\dcs.log + +Screenshots of any relevant screens or issues and any other pertinent information. + +### Can I join up and help out with the project? ### +Absolutely, join the discord and ping any of the developers to get briefed. ### Can I be a beta/alpha-tester? ### -With first public release planned for the very-near future we are fully committed to the final sprint, as such we will not be formally recruiting more people to test pre-release. - -Post-release we will be eager to hear feedback of all forms and take in bug-reports, at this time after release we will begin considering bringing in more team members to test in development versions as we go. +Same as above! ### Do you have a roadmap? ### We do not have a roadmap no, we have a laundry list of things we are hoping to do. @@ -71,9 +81,5 @@ A and B never communicate when you connect the client you download the web page Olympus by itself should not have a noticeable impact on server performance, however the ability for the user to spawn arbitrary units and command engagements means Olympus can be used in such a way that brings the game to it's knees. Be cognizant of how you play, whether it's done through Olympus or the mission editor 500 MLRS units firing at once is not going to go over well with most servers - - - - diff --git a/src/DCSOlympus.props b/backend/DCSOlympus.props similarity index 100% rename from src/DCSOlympus.props rename to backend/DCSOlympus.props diff --git a/src/core/core.filters b/backend/core/core.filters similarity index 100% rename from src/core/core.filters rename to backend/core/core.filters diff --git a/src/core/core.rc b/backend/core/core.rc similarity index 95% rename from src/core/core.rc rename to backend/core/core.rc index eb23d8af..89e90278 100644 --- a/src/core/core.rc +++ b/backend/core/core.rc @@ -61,7 +61,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,3,0 + FILEVERSION 1,0,4,0 PRODUCTVERSION 1,0,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "DCS Olympus" VALUE "FileDescription", "DCS Olympus" - VALUE "FileVersion", "1.0.3.0" + VALUE "FileVersion", "1.0.4.0" VALUE "InternalName", "core.dll" VALUE "LegalCopyright", "Copyright (C) 2023" VALUE "OriginalFilename", "core.dll" VALUE "ProductName", "DCS Olympus" - VALUE "ProductVersion", "1.0.3.0" + VALUE "ProductVersion", "1.0.4.0" END END BLOCK "VarFileInfo" diff --git a/src/core/core.vcxproj b/backend/core/core.vcxproj similarity index 97% rename from src/core/core.vcxproj rename to backend/core/core.vcxproj index cd753cfb..16d00397 100644 --- a/src/core/core.vcxproj +++ b/backend/core/core.vcxproj @@ -110,26 +110,26 @@ - + - + - + - + .\..\..\bin\$(Platform)\$(Configuration)\ - .\..\..\bin\ + .\..\..\build\backend\bin\ @@ -212,4 +212,4 @@ - + \ No newline at end of file diff --git a/src/core/core.vcxproj.filters b/backend/core/core.vcxproj.filters similarity index 100% rename from src/core/core.vcxproj.filters rename to backend/core/core.vcxproj.filters diff --git a/src/core/include/aircraft.h b/backend/core/include/aircraft.h similarity index 100% rename from src/core/include/aircraft.h rename to backend/core/include/aircraft.h diff --git a/src/core/include/airunit.h b/backend/core/include/airunit.h similarity index 100% rename from src/core/include/airunit.h rename to backend/core/include/airunit.h diff --git a/src/core/include/commands.h b/backend/core/include/commands.h similarity index 100% rename from src/core/include/commands.h rename to backend/core/include/commands.h diff --git a/src/core/include/datatypes.h b/backend/core/include/datatypes.h similarity index 99% rename from src/core/include/datatypes.h rename to backend/core/include/datatypes.h index 6dd44e85..c0e1c86e 100644 --- a/src/core/include/datatypes.h +++ b/backend/core/include/datatypes.h @@ -152,6 +152,7 @@ struct SpawnOptions { string unitType; Coords location; string loadout; + string skill; string liveryID; }; diff --git a/src/core/include/groundunit.h b/backend/core/include/groundunit.h similarity index 100% rename from src/core/include/groundunit.h rename to backend/core/include/groundunit.h diff --git a/src/core/include/helicopter.h b/backend/core/include/helicopter.h similarity index 100% rename from src/core/include/helicopter.h rename to backend/core/include/helicopter.h diff --git a/src/core/include/navyunit.h b/backend/core/include/navyunit.h similarity index 100% rename from src/core/include/navyunit.h rename to backend/core/include/navyunit.h diff --git a/src/core/include/scheduler.h b/backend/core/include/scheduler.h similarity index 100% rename from src/core/include/scheduler.h rename to backend/core/include/scheduler.h diff --git a/src/core/include/scriptloader.h b/backend/core/include/scriptloader.h similarity index 100% rename from src/core/include/scriptloader.h rename to backend/core/include/scriptloader.h diff --git a/src/core/include/server.h b/backend/core/include/server.h similarity index 100% rename from src/core/include/server.h rename to backend/core/include/server.h diff --git a/src/core/include/unit.h b/backend/core/include/unit.h similarity index 100% rename from src/core/include/unit.h rename to backend/core/include/unit.h diff --git a/src/core/include/unitsmanager.h b/backend/core/include/unitsmanager.h similarity index 100% rename from src/core/include/unitsmanager.h rename to backend/core/include/unitsmanager.h diff --git a/src/core/include/weapon.h b/backend/core/include/weapon.h similarity index 100% rename from src/core/include/weapon.h rename to backend/core/include/weapon.h diff --git a/src/core/include/weaponsmanager.h b/backend/core/include/weaponsmanager.h similarity index 100% rename from src/core/include/weaponsmanager.h rename to backend/core/include/weaponsmanager.h diff --git a/src/core/resource.h b/backend/core/resource.h similarity index 100% rename from src/core/resource.h rename to backend/core/resource.h diff --git a/src/core/src/aircraft.cpp b/backend/core/src/aircraft.cpp similarity index 100% rename from src/core/src/aircraft.cpp rename to backend/core/src/aircraft.cpp diff --git a/src/core/src/airunit.cpp b/backend/core/src/airunit.cpp similarity index 100% rename from src/core/src/airunit.cpp rename to backend/core/src/airunit.cpp diff --git a/src/core/src/commands.cpp b/backend/core/src/commands.cpp similarity index 95% rename from src/core/src/commands.cpp rename to backend/core/src/commands.cpp index 377ed71f..604580cb 100644 --- a/src/core/src/commands.cpp +++ b/backend/core/src/commands.cpp @@ -46,7 +46,9 @@ string SpawnGroundUnits::getString() << "unitType = " << "\"" << spawnOptions[i].unitType << "\"" << ", " << "lat = " << spawnOptions[i].location.lat << ", " << "lng = " << spawnOptions[i].location.lng << ", " - << "liveryID = " << "\"" << spawnOptions[i].liveryID << "\"" << " }, "; + << "liveryID = " << "\"" << spawnOptions[i].liveryID << "\"" << ", " + << "skill = \"" << spawnOptions[i].skill << "\"" << "}, "; + } std::ostringstream commandSS; @@ -70,7 +72,8 @@ string SpawnNavyUnits::getString() << "unitType = " << "\"" << spawnOptions[i].unitType << "\"" << ", " << "lat = " << spawnOptions[i].location.lat << ", " << "lng = " << spawnOptions[i].location.lng << ", " - << "liveryID = " << "\"" << spawnOptions[i].liveryID << "\"" << " }, "; + << "liveryID = " << "\"" << spawnOptions[i].liveryID << "\"" << ", " + << "skill = \"" << spawnOptions[i].skill << "\"" << "}, "; } std::ostringstream commandSS; @@ -95,7 +98,8 @@ string SpawnAircrafts::getString() << "lng = " << spawnOptions[i].location.lng << ", " << "alt = " << spawnOptions[i].location.alt << ", " << "loadout = \"" << spawnOptions[i].loadout << "\"" << ", " - << "liveryID = " << "\"" << spawnOptions[i].liveryID << "\"" << " }, "; + << "liveryID = " << "\"" << spawnOptions[i].liveryID << "\"" << ", " + << "skill = \"" << spawnOptions[i].skill << "\"" << "}, "; } std::ostringstream commandSS; @@ -122,7 +126,8 @@ string SpawnHelicopters::getString() << "lng = " << spawnOptions[i].location.lng << ", " << "alt = " << spawnOptions[i].location.alt << ", " << "loadout = \"" << spawnOptions[i].loadout << "\"" << ", " - << "liveryID = " << "\"" << spawnOptions[i].liveryID << "\"" << " }, "; + << "liveryID = " << "\"" << spawnOptions[i].liveryID << "\"" << ", " + << "skill = \"" << spawnOptions[i].skill << "\"" << "}, "; } std::ostringstream commandSS; diff --git a/src/core/src/core.cpp b/backend/core/src/core.cpp similarity index 100% rename from src/core/src/core.cpp rename to backend/core/src/core.cpp diff --git a/src/core/src/datatypes.cpp b/backend/core/src/datatypes.cpp similarity index 100% rename from src/core/src/datatypes.cpp rename to backend/core/src/datatypes.cpp diff --git a/src/core/src/groundunit.cpp b/backend/core/src/groundunit.cpp similarity index 100% rename from src/core/src/groundunit.cpp rename to backend/core/src/groundunit.cpp diff --git a/src/core/src/helicopter.cpp b/backend/core/src/helicopter.cpp similarity index 100% rename from src/core/src/helicopter.cpp rename to backend/core/src/helicopter.cpp diff --git a/src/core/src/navyunit.cpp b/backend/core/src/navyunit.cpp similarity index 99% rename from src/core/src/navyunit.cpp rename to backend/core/src/navyunit.cpp index c9d9d69f..916b00b4 100644 --- a/src/core/src/navyunit.cpp +++ b/backend/core/src/navyunit.cpp @@ -167,6 +167,7 @@ void NavyUnit::AIloop() setState(State::IDLE); } } + break; } case State::ATTACK: { @@ -187,6 +188,8 @@ void NavyUnit::AIloop() else { setState(State::IDLE); } + + break; } case State::FIRE_AT_AREA: { setTask("Firing at area"); @@ -200,6 +203,8 @@ void NavyUnit::AIloop() scheduler->appendCommand(command); setHasTask(true); } + + break; } case State::SIMULATE_FIRE_FIGHT: { setTask("Simulating fire fight"); @@ -207,6 +212,7 @@ void NavyUnit::AIloop() // TODO setState(State::IDLE); + break; } default: break; diff --git a/src/core/src/scheduler.cpp b/backend/core/src/scheduler.cpp similarity index 98% rename from src/core/src/scheduler.cpp rename to backend/core/src/scheduler.cpp index 42dca980..23947274 100644 --- a/src/core/src/scheduler.cpp +++ b/backend/core/src/scheduler.cpp @@ -192,6 +192,7 @@ void Scheduler::handleRequest(string key, json::value value, string username, js string airbaseName = to_string(value[L"airbaseName"]); string country = to_string(value[L"country"]); + int spawnPoints = value[L"spawnPoints"].as_number().to_int32(); if (!checkSpawnPoints(spawnPoints, coalition)) return; @@ -204,9 +205,10 @@ void Scheduler::handleRequest(string key, json::value value, string username, js Coords location; location.lat = lat; location.lng = lng; location.alt = alt; string loadout = to_string(unit[L"loadout"]); string liveryID = to_string(unit[L"liveryID"]); + string skill = to_string(unit[L"skill"]); - spawnOptions.push_back({unitType, location, loadout, liveryID}); - log(username + " spawned a " + coalition + " " + unitType, true); + spawnOptions.push_back({unitType, location, loadout, skill, liveryID}); + log(username + " spawned a " + coalition + " " + unitType , true); } if (key.compare("spawnAircrafts") == 0) @@ -231,8 +233,9 @@ void Scheduler::handleRequest(string key, json::value value, string username, js double lng = unit[L"location"][L"lng"].as_double(); Coords location; location.lat = lat; location.lng = lng; string liveryID = to_string(unit[L"liveryID"]); + string skill = to_string(unit[L"skill"]); - spawnOptions.push_back({ unitType, location, "", liveryID }); + spawnOptions.push_back({ unitType, location, "", skill, liveryID}); log(username + " spawned a " + coalition + " " + unitType, true); } diff --git a/src/core/src/scriptloader.cpp b/backend/core/src/scriptloader.cpp similarity index 100% rename from src/core/src/scriptloader.cpp rename to backend/core/src/scriptloader.cpp diff --git a/src/core/src/server.cpp b/backend/core/src/server.cpp similarity index 96% rename from src/core/src/server.cpp rename to backend/core/src/server.cpp index 1c5ded18..e582d7b9 100644 --- a/src/core/src/server.cpp +++ b/backend/core/src/server.cpp @@ -296,14 +296,14 @@ void Server::task() ss << ifstream.rdbuf(); std::error_code errorCode; json::value config = json::value::parse(ss.str(), errorCode); - if (config.is_object() && config.has_object_field(L"server") && - config[L"server"].has_string_field(L"address") && config[L"server"].has_number_field(L"port")) + if (config.is_object() && config.has_object_field(L"backend") && + config[L"backend"].has_string_field(L"address") && config[L"backend"].has_number_field(L"port")) { - address = "http://" + to_string(config[L"server"][L"address"]) + ":" + to_string(config[L"server"][L"port"].as_number().to_int32()); - log("Starting server on " + address); + address = "http://" + to_string(config[L"backend"][L"address"]) + ":" + to_string(config[L"backend"][L"port"].as_number().to_int32()); + log("Starting backend on " + address); } else - log("Error reading configuration file. Starting server on " + address); + log("Error reading configuration file. Starting backend on " + address); if (config.is_object() && config.has_object_field(L"authentication")) { diff --git a/src/core/src/unit.cpp b/backend/core/src/unit.cpp similarity index 100% rename from src/core/src/unit.cpp rename to backend/core/src/unit.cpp diff --git a/src/core/src/unitsmanager.cpp b/backend/core/src/unitsmanager.cpp similarity index 100% rename from src/core/src/unitsmanager.cpp rename to backend/core/src/unitsmanager.cpp diff --git a/src/core/src/weapon.cpp b/backend/core/src/weapon.cpp similarity index 100% rename from src/core/src/weapon.cpp rename to backend/core/src/weapon.cpp diff --git a/src/core/src/weaponsmanager.cpp b/backend/core/src/weaponsmanager.cpp similarity index 100% rename from src/core/src/weaponsmanager.cpp rename to backend/core/src/weaponsmanager.cpp diff --git a/src/dcstools/dcstools.rc b/backend/dcstools/dcstools.rc similarity index 95% rename from src/dcstools/dcstools.rc rename to backend/dcstools/dcstools.rc index 390faf2a..ba52e17c 100644 --- a/src/dcstools/dcstools.rc +++ b/backend/dcstools/dcstools.rc @@ -61,7 +61,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,3,0 + FILEVERSION 1,0,4,0 PRODUCTVERSION 1,0,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "DCS Olympus" VALUE "FileDescription", "DCS Olympus" - VALUE "FileVersion", "1.0.3.0" + VALUE "FileVersion", "1.0.4.0" VALUE "InternalName", "dcstools.dll" VALUE "LegalCopyright", "Copyright (C) 2023" VALUE "OriginalFilename", "dcstools.dll" VALUE "ProductName", "DCS Olympus" - VALUE "ProductVersion", "1.0.3.0" + VALUE "ProductVersion", "1.0.4.0" END END BLOCK "VarFileInfo" diff --git a/src/dcstools/dcstools.vcxproj b/backend/dcstools/dcstools.vcxproj similarity index 97% rename from src/dcstools/dcstools.vcxproj rename to backend/dcstools/dcstools.vcxproj index ca4eca82..3c888948 100644 --- a/src/dcstools/dcstools.vcxproj +++ b/backend/dcstools/dcstools.vcxproj @@ -77,23 +77,23 @@ - + - + - + - + - .\..\..\bin\ + .\..\..\build\backend\bin\ @@ -172,4 +172,4 @@ - + \ No newline at end of file diff --git a/src/dcstools/dcstools.vcxproj.filters b/backend/dcstools/dcstools.vcxproj.filters similarity index 100% rename from src/dcstools/dcstools.vcxproj.filters rename to backend/dcstools/dcstools.vcxproj.filters diff --git a/src/dcstools/include/dcstools.h b/backend/dcstools/include/dcstools.h similarity index 100% rename from src/dcstools/include/dcstools.h rename to backend/dcstools/include/dcstools.h diff --git a/src/dcstools/resource.h b/backend/dcstools/resource.h similarity index 100% rename from src/dcstools/resource.h rename to backend/dcstools/resource.h diff --git a/src/dcstools/src/dcstools.cpp b/backend/dcstools/src/dcstools.cpp similarity index 100% rename from src/dcstools/src/dcstools.cpp rename to backend/dcstools/src/dcstools.cpp diff --git a/src/docs b/backend/docs similarity index 100% rename from src/docs rename to backend/docs diff --git a/src/logger/include/interface.h b/backend/logger/include/interface.h similarity index 100% rename from src/logger/include/interface.h rename to backend/logger/include/interface.h diff --git a/src/logger/include/logger.h b/backend/logger/include/logger.h similarity index 100% rename from src/logger/include/logger.h rename to backend/logger/include/logger.h diff --git a/src/logger/logger.rc b/backend/logger/logger.rc similarity index 95% rename from src/logger/logger.rc rename to backend/logger/logger.rc index c7f0d6ab..4147ae59 100644 --- a/src/logger/logger.rc +++ b/backend/logger/logger.rc @@ -61,7 +61,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,3,0 + FILEVERSION 1,0,4,0 PRODUCTVERSION 1,0,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "DCS Olympus" VALUE "FileDescription", "DCS Olympus" - VALUE "FileVersion", "1.0.3.0" + VALUE "FileVersion", "1.0.4.0" VALUE "InternalName", "logger.dll" VALUE "LegalCopyright", "Copyright (C) 2023" VALUE "OriginalFilename", "logger.dll" VALUE "ProductName", "DCS Olympus" - VALUE "ProductVersion", "1.0.3.0" + VALUE "ProductVersion", "1.0.4.0" END END BLOCK "VarFileInfo" diff --git a/src/logger/logger.vcxproj b/backend/logger/logger.vcxproj similarity index 97% rename from src/logger/logger.vcxproj rename to backend/logger/logger.vcxproj index 4b723fce..42769412 100644 --- a/src/logger/logger.vcxproj +++ b/backend/logger/logger.vcxproj @@ -76,23 +76,23 @@ - + - + - + - + - .\..\..\bin\ + .\..\..\build\backend\bin\ @@ -169,4 +169,4 @@ - + \ No newline at end of file diff --git a/src/logger/logger.vcxproj.filters b/backend/logger/logger.vcxproj.filters similarity index 100% rename from src/logger/logger.vcxproj.filters rename to backend/logger/logger.vcxproj.filters diff --git a/src/logger/resource.h b/backend/logger/resource.h similarity index 100% rename from src/logger/resource.h rename to backend/logger/resource.h diff --git a/src/logger/src/interface.cpp b/backend/logger/src/interface.cpp similarity index 100% rename from src/logger/src/interface.cpp rename to backend/logger/src/interface.cpp diff --git a/src/logger/src/logger.cpp b/backend/logger/src/logger.cpp similarity index 100% rename from src/logger/src/logger.cpp rename to backend/logger/src/logger.cpp diff --git a/src/luatools/include/luatools.h b/backend/luatools/include/luatools.h similarity index 100% rename from src/luatools/include/luatools.h rename to backend/luatools/include/luatools.h diff --git a/src/luatools/luatools.rc b/backend/luatools/luatools.rc similarity index 95% rename from src/luatools/luatools.rc rename to backend/luatools/luatools.rc index e5ba2c61..dc9a55fb 100644 --- a/src/luatools/luatools.rc +++ b/backend/luatools/luatools.rc @@ -61,7 +61,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,3,0 + FILEVERSION 1,0,4,0 PRODUCTVERSION 1,0,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "DCS Olympus" VALUE "FileDescription", "DCS Olympus" - VALUE "FileVersion", "1.0.3.0" + VALUE "FileVersion", "1.0.4.0" VALUE "InternalName", "luatools.dll" VALUE "LegalCopyright", "Copyright (C) 2023" VALUE "OriginalFilename", "luatools.dll" VALUE "ProductName", "DCS Olympus" - VALUE "ProductVersion", "1.0.3.0" + VALUE "ProductVersion", "1.0.4.0" END END BLOCK "VarFileInfo" diff --git a/src/luatools/luatools.vcxproj b/backend/luatools/luatools.vcxproj similarity index 97% rename from src/luatools/luatools.vcxproj rename to backend/luatools/luatools.vcxproj index 1b8a8b08..ce6209e8 100644 --- a/src/luatools/luatools.vcxproj +++ b/backend/luatools/luatools.vcxproj @@ -60,23 +60,23 @@ - + - + - + - + - .\..\..\bin\ + .\..\..\build\backend\bin\ @@ -173,4 +173,4 @@ - + \ No newline at end of file diff --git a/src/luatools/luatools.vcxproj.filters b/backend/luatools/luatools.vcxproj.filters similarity index 100% rename from src/luatools/luatools.vcxproj.filters rename to backend/luatools/luatools.vcxproj.filters diff --git a/src/luatools/resource.h b/backend/luatools/resource.h similarity index 100% rename from src/luatools/resource.h rename to backend/luatools/resource.h diff --git a/src/luatools/src/luatools.cpp b/backend/luatools/src/luatools.cpp similarity index 100% rename from src/luatools/src/luatools.cpp rename to backend/luatools/src/luatools.cpp diff --git a/src/olympus.sln b/backend/olympus.sln similarity index 100% rename from src/olympus.sln rename to backend/olympus.sln diff --git a/src/olympus/olympus.filters b/backend/olympus/olympus.filters similarity index 100% rename from src/olympus/olympus.filters rename to backend/olympus/olympus.filters diff --git a/src/olympus/olympus.rc b/backend/olympus/olympus.rc similarity index 95% rename from src/olympus/olympus.rc rename to backend/olympus/olympus.rc index d03c3f03..ba7da963 100644 --- a/src/olympus/olympus.rc +++ b/backend/olympus/olympus.rc @@ -61,7 +61,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,3,0 + FILEVERSION 1,0,4,0 PRODUCTVERSION 1,0,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "DCS Olympus" VALUE "FileDescription", "DCS Olympus" - VALUE "FileVersion", "1.0.3.0" + VALUE "FileVersion", "1.0.4.0" VALUE "InternalName", "olympus.dll" VALUE "LegalCopyright", "Copyright (C) 2023" VALUE "OriginalFilename", "olympus.dll" VALUE "ProductName", "DCS Olympus" - VALUE "ProductVersion", "1.0.3.0" + VALUE "ProductVersion", "1.0.4.0" END END BLOCK "VarFileInfo" diff --git a/src/olympus/olympus.vcxproj b/backend/olympus/olympus.vcxproj similarity index 97% rename from src/olympus/olympus.vcxproj rename to backend/olympus/olympus.vcxproj index 310338fa..0b5d29bb 100644 --- a/src/olympus/olympus.vcxproj +++ b/backend/olympus/olympus.vcxproj @@ -62,11 +62,11 @@ - + - + @@ -75,7 +75,7 @@ false - .\..\..\bin\ + .\..\..\build\backend\bin\ @@ -127,4 +127,4 @@ - + \ No newline at end of file diff --git a/src/olympus/olympus.vcxproj.filters b/backend/olympus/olympus.vcxproj.filters similarity index 100% rename from src/olympus/olympus.vcxproj.filters rename to backend/olympus/olympus.vcxproj.filters diff --git a/src/olympus/resource.h b/backend/olympus/resource.h similarity index 100% rename from src/olympus/resource.h rename to backend/olympus/resource.h diff --git a/src/olympus/src/olympus.cpp b/backend/olympus/src/olympus.cpp similarity index 100% rename from src/olympus/src/olympus.cpp rename to backend/olympus/src/olympus.cpp diff --git a/src/shared/include/defines.h b/backend/shared/include/defines.h similarity index 100% rename from src/shared/include/defines.h rename to backend/shared/include/defines.h diff --git a/src/shared/include/framework.h b/backend/shared/include/framework.h similarity index 100% rename from src/shared/include/framework.h rename to backend/shared/include/framework.h diff --git a/src/utils/include/utils.h b/backend/utils/include/utils.h similarity index 100% rename from src/utils/include/utils.h rename to backend/utils/include/utils.h diff --git a/src/utils/resource.h b/backend/utils/resource.h similarity index 100% rename from src/utils/resource.h rename to backend/utils/resource.h diff --git a/src/utils/src/utils.cpp b/backend/utils/src/utils.cpp similarity index 100% rename from src/utils/src/utils.cpp rename to backend/utils/src/utils.cpp diff --git a/src/utils/utils.rc b/backend/utils/utils.rc similarity index 95% rename from src/utils/utils.rc rename to backend/utils/utils.rc index e03ae40f..b6b4d259 100644 --- a/src/utils/utils.rc +++ b/backend/utils/utils.rc @@ -61,7 +61,7 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,3,0 + FILEVERSION 1,0,4,0 PRODUCTVERSION 1,0,3,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "DCS Olympus" VALUE "FileDescription", "DCS Olympus" - VALUE "FileVersion", "1.0.3.0" + VALUE "FileVersion", "1.0.4.0" VALUE "InternalName", "utils.dll" VALUE "LegalCopyright", "Copyright (C) 2023" VALUE "OriginalFilename", "utils.dll" VALUE "ProductName", "TODO: " - VALUE "ProductVersion", "1.0.3.0" + VALUE "ProductVersion", "1.0.4.0" END END BLOCK "VarFileInfo" diff --git a/src/utils/utils.vcxproj b/backend/utils/utils.vcxproj similarity index 99% rename from src/utils/utils.vcxproj rename to backend/utils/utils.vcxproj index e5ce5cb0..65397a09 100644 --- a/src/utils/utils.vcxproj +++ b/backend/utils/utils.vcxproj @@ -85,7 +85,7 @@ - .\..\..\bin\ + .\..\..\build\backend\bin\ .\..\..\bin\$(Platform)\$(Configuration)\ diff --git a/src/utils/utils.vcxproj.filters b/backend/utils/utils.vcxproj.filters similarity index 100% rename from src/utils/utils.vcxproj.filters rename to backend/utils/utils.vcxproj.filters diff --git a/backend/vcpkg-configuration.json b/backend/vcpkg-configuration.json new file mode 100644 index 00000000..470c34cd --- /dev/null +++ b/backend/vcpkg-configuration.json @@ -0,0 +1,14 @@ +{ + "default-registry": { + "kind": "git", + "baseline": "7f9f0e44db287e8e67c0e888141bfa200ab45121", + "repository": "https://github.com/microsoft/vcpkg" + }, + "registries": [ + { + "kind": "artifact", + "location": "https://github.com/microsoft/vcpkg-ce-catalog/archive/refs/heads/main.zip", + "name": "microsoft" + } + ] +} \ No newline at end of file diff --git a/backend/vcpkg.json b/backend/vcpkg.json new file mode 100644 index 00000000..294e549a --- /dev/null +++ b/backend/vcpkg.json @@ -0,0 +1,6 @@ +{ + "dependencies": [ + "cpprestsdk", + "geographiclib" + ] +} \ No newline at end of file diff --git a/build.bat b/build.bat deleted file mode 100644 index 6100e201..00000000 --- a/build.bat +++ /dev/null @@ -1,23 +0,0 @@ -call node increase_version.js - -cd src -msbuild olympus.sln /t:Build /p:Configuration=Release -cd .. - -cd client -rmdir /s /q "hgt" -call npm install -call npm run emit-declarations -call npm run build-release - -cd "plugins\controltips" -call npm install -call npm run build-release -cd "..\.." - -cd "plugins\databasemanager" -call npm install -call npm run build-release -cd "..\.." - -cd.. diff --git a/build_package.bat b/build_package.bat index c0da8974..8c2d65af 100644 --- a/build_package.bat +++ b/build_package.bat @@ -1,2 +1,2 @@ -call build.bat -call package.bat \ No newline at end of file +call .\scripts\batch\build.bat +call .\scripts\batch\package.bat \ No newline at end of file diff --git a/client/.vscode/settings.json b/client/.vscode/settings.json deleted file mode 100644 index 7a73a41b..00000000 --- a/client/.vscode/settings.json +++ /dev/null @@ -1,2 +0,0 @@ -{ -} \ No newline at end of file diff --git a/client/Dockerfile b/client/Dockerfile deleted file mode 100644 index 23fc6e3e..00000000 --- a/client/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM node:20-alpine AS appbuild - -WORKDIR /usr/src/app -COPY package.json ./ -COPY package-lock.json ./ -RUN npm install -COPY . . -RUN npm run build-release-linux - -FROM node:20-alpine -WORKDIR /usr/src/app -COPY package.json ./ -COPY package-lock.json ./ -RUN npm install --omit=dev -COPY . . -COPY --from=appbuild /usr/src/app/public ./public -EXPOSE 3000 -CMD npm start diff --git a/client/configurator.js b/client/configurator.js deleted file mode 100644 index 540ac0dd..00000000 --- a/client/configurator.js +++ /dev/null @@ -1,167 +0,0 @@ -const fs = require('fs') -const path = require('path') -const yargs = require('yargs'); -const prompt = require('prompt-sync')({sigint: true}); -const sha256 = require('sha256'); -var jsonPath = path.join('..', 'olympus.json'); -var regedit = require('regedit') - -const shellFoldersKey = 'HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders' -const saveGamesKey = '{4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4}' - -/* Set the acceptable values */ -yargs.alias('a', 'address').describe('a', 'Backend address').string('a'); -yargs.alias('b', 'backendPort').describe('b', 'Backend port').number('b'); -yargs.alias('c', 'clientPort').describe('c', 'Client port').number('c'); -yargs.alias('p', 'gameMasterPassword').describe('p', 'Game Master password').string('p'); -yargs.alias('bp', 'blueCommanderPassword').describe('bp', 'Blue Commander password').string('bp'); -yargs.alias('rp', 'redCommanderPassword').describe('rp', 'Red Commander password').string('rp'); -yargs.alias('d', 'directory').describe('d', 'Directory where the DCS Olympus configurator is located').string('rp'); -args = yargs.argv; - -async function run() { - /* Check that we can read the json */ - if (fs.existsSync(jsonPath)) { - var json = JSON.parse(fs.readFileSync(jsonPath, 'utf-8')); - - var address = args.address ?? json["server"]["address"]; - var clientPort = args.clientPort ?? json["client"]["port"]; - var backendPort = args.backendPort ?? json["server"]["port"]; - var gameMasterPassword = args.gameMasterPassword? sha256(args.gameMasterPassword): json["authentication"]["gameMasterPassword"]; - var blueCommanderPassword = args.blueCommanderPassword? sha256(args.blueCommanderPassword): json["authentication"]["blueCommanderPassword"]; - var redCommanderPassword = args.redCommanderPassword? sha256(args.redCommanderPassword): json["authentication"]["redCommanderPassword"]; - - /* Run in interactive mode */ - if (args.address === undefined && args.clientPort === undefined && args.backendPort === undefined && - args.gameMasterPassword === undefined && args.blueCommanderPassword === undefined && args.redCommanderPassword === undefined) { - - var newValue; - var result; - - /* Get the new address */ - newValue = prompt(`Insert an address or press Enter to keep current value ${address}. Use * for any address: `); - address = newValue !== ""? newValue: address; - - /* Get the new client port */ - while (true) { - newValue = prompt(`Insert a client port or press Enter to keep current value ${clientPort}. Integers between 1025 and 65535: `); - if (newValue === "") - break; - result = Number(newValue); - - if (!isNaN(result) && Number.isInteger(result) && result > 1024 && result <= 65535) - break; - } - clientPort = newValue? result: clientPort; - - /* Get the new backend port */ - while (true) { - newValue = prompt(`Insert a backend port or press Enter to keep current value ${backendPort}. Integers between 1025 and 65535: `); - if (newValue === "") - break; - result = Number(newValue); - - if (!isNaN(result) && Number.isInteger(result) && result > 1024 && result <= 65535 && result != clientPort) - break; - - if (result === clientPort) - console.log("Client port and backend port must be different."); - } - backendPort = newValue? result: backendPort; - - /* Get the new Game Master password */ - newValue = prompt(`Insert a new Game Master password or press Enter to keep current value: `, {echo: "*"}); - gameMasterPassword = newValue !== ""? sha256(newValue): gameMasterPassword; - - /* Get the new Blue Commander password */ - newValue = prompt(`Insert a new Blue Commander password or press Enter to keep current value: `, {echo: "*"}); - blueCommanderPassword = newValue !== ""? sha256(newValue): blueCommanderPassword; - - /* Get the new Red Commander password */ - newValue = prompt(`Insert a new Red Commander password or press Enter to keep current value: `, {echo: "*"}); - redCommanderPassword = newValue !== ""? sha256(newValue): redCommanderPassword; - } - - /* Apply the inputs */ - json["server"]["address"] = address; - json["client"]["port"] = clientPort; - json["server"]["port"] = backendPort; - json["authentication"]["gameMasterPassword"] = gameMasterPassword; - json["authentication"]["blueCommanderPassword"] = blueCommanderPassword; - json["authentication"]["redCommanderPassword"] = redCommanderPassword; - - /* Write the result to disk */ - const serialized = JSON.stringify(json, null, 4); - fs.writeFileSync(jsonPath, serialized, 'utf8'); - console.log("Olympus.json updated correctly, goodbye!"); - } - else { - console.error("Error, could not read olympus.json file!") - } - - /* Wait a bit before closing the window */ - await new Promise(resolve => setTimeout(resolve, 3000)); -} - -console.log('\x1b[36m%s\x1b[0m', "*********************************************************************"); -console.log('\x1b[36m%s\x1b[0m', "* _____ _____ _____ ____ _ *"); -console.log('\x1b[36m%s\x1b[0m', "* | __ \\ / ____|/ ____| / __ \\| | *"); -console.log('\x1b[36m%s\x1b[0m', "* | | | | | | (___ | | | | |_ _ _ __ ___ _ __ _ _ ___ *"); -console.log('\x1b[36m%s\x1b[0m', "* | | | | | \\___ \\ | | | | | | | | '_ ` _ \\| '_ \\| | | / __| *"); -console.log('\x1b[36m%s\x1b[0m', "* | |__| | |____ ____) | | |__| | | |_| | | | | | | |_) | |_| \\__ \\ *"); -console.log('\x1b[36m%s\x1b[0m', "* |_____/ \\_____|_____/ \\____/|_|\\__, |_| |_| |_| .__/ \\__,_|___/ *"); -console.log('\x1b[36m%s\x1b[0m', "* __/ | | | *"); -console.log('\x1b[36m%s\x1b[0m', "* |___/ |_| *"); -console.log('\x1b[36m%s\x1b[0m', "*********************************************************************"); -console.log('\x1b[36m%s\x1b[0m', ""); - -console.log("DCS Olympus configurator {{OLYMPUS_VERSION_NUMBER}}.{{OLYMPUS_COMMIT_HASH}}"); -console.log(""); - -/* Run the configurator */ -if (args.directory) { - jsonPath = path.join(args.directory, "olympus.json"); -} -else { - /* Automatically detect possible DCS installation folders */ - regedit.list(shellFoldersKey, function(err, result) { - if (err) { - console.log(err); - } - else { - if (result[shellFoldersKey] !== undefined && result[shellFoldersKey]["exists"] && result[shellFoldersKey]['values'][saveGamesKey] !== undefined && result[shellFoldersKey]['values'][saveGamesKey]['value'] !== undefined) - { - const searchpath = result[shellFoldersKey]['values'][saveGamesKey]['value']; - const folders = fs.readdirSync(searchpath); - var options = []; - folders.forEach((folder) => { - if (fs.existsSync(path.join(searchpath, folder, "Logs", "dcs.log"))) { - options.push(folder); - } - }) - console.log("The following DCS Saved Games folders have been automatically detected.") - options.forEach((folder, index) => { - console.log(`(${index + 1}) ${folder}`) - }); - while (true) { - var newValue = prompt(`Please choose a folder onto which the configurator shall operate by typing the associated number: `) - result = Number(newValue); - - if (!isNaN(result) && Number.isInteger(result) && result > 0 && result <= options.length) { - jsonPath = path.join(searchpath, options[result - 1], "Config", "olympus.json"); - break; - } - else { - console.log(`Please type a number between 1 and ${options.length}`); - } - } - - } else { - console.error("An error occured while trying to fetch the location of the DCS folder. Please type the folder location manually.") - jsonPath = path.join(prompt(`DCS Saved Games folder location: `), "olympus.json"); - } - console.log(`Configurator will run on ${jsonPath}, if this is incorrect please restart the configurator`) - run(); - } - }) -} diff --git a/client/copy.bat b/client/copy.bat deleted file mode 100644 index 967d62b1..00000000 --- a/client/copy.bat +++ /dev/null @@ -1,4 +0,0 @@ -xcopy /S /Q /Y /F .\\node_modules\\leaflet\\dist\\leaflet.css .\\public\\stylesheets\\leaflet\\leaflet.css -xcopy /S /Q /Y /F .\\node_modules\\leaflet-gesture-handling\\dist\\leaflet-gesture-handling.css .\\public\\stylesheets\\leaflet\\leaflet-gesture-handling.css -xcopy /S /Q /Y /F .\\node_modules\\leaflet.nauticscale\\dist\\leaflet.nauticscale.js .\\public\\javascripts\\leaflet.nauticscale.js -xcopy /S /Q /Y /F .\\node_modules\\leaflet-path-drag\\dist\\L.Path.Drag.js .\\public\\javascripts\\L.Path.Drag.js diff --git a/client/copy.sh b/client/copy.sh deleted file mode 100755 index b809b1fc..00000000 --- a/client/copy.sh +++ /dev/null @@ -1,4 +0,0 @@ -cp ./node_modules/leaflet/dist/leaflet.css ./public/stylesheets/leaflet/leaflet.css -cp ./node_modules/leaflet-gesture-handling/dist/leaflet-gesture-handling.css ./public/stylesheets/leaflet/leaflet-gesture-handling.css -cp ./node_modules/leaflet.nauticscale/dist/leaflet.nauticscale.js ./public/javascripts/leaflet.nauticscale.js -cp ./node_modules/leaflet-path-drag/dist/L.Path.Drag.js ./public/javascripts/L.Path.Drag.js diff --git a/client/demo.bat b/client/demo.bat deleted file mode 100644 index f76a472f..00000000 --- a/client/demo.bat +++ /dev/null @@ -1 +0,0 @@ -node .\bin\demo \ No newline at end of file diff --git a/client/demo.js b/client/demo.js deleted file mode 100644 index cf0ba5bc..00000000 --- a/client/demo.js +++ /dev/null @@ -1,526 +0,0 @@ -var basicAuth = require('express-basic-auth') -var logger = require('morgan'); -var enc = new TextEncoder(); - -var express = require('express'); -var fs = require('fs'); - -let rawdata = fs.readFileSync('../olympus.json'); -let config = JSON.parse(rawdata); - -var app = express(); - -app.use(logger('dev')); - -const aircraftDatabase = require('./public/databases/units/aircraftdatabase.json'); -const helicopterDatabase = require('./public/databases/units/helicopterdatabase.json'); -const groundUnitDatabase = require('./public/databases/units/groundunitdatabase.json'); -const navyUnitDatabase = require('./public/databases/units/navyunitdatabase.json'); - -const DEMO_UNIT_DATA = {} - -const DEMO_WEAPONS_DATA = { - /*["1001"]:{ category: "Missile", alive: true, coalition: 2, name: "", position: { lat: 37.1, lng: -116, alt: 1000 }, speed: 200, heading: 45 * Math.PI / 180 }, */ -} - -class DemoDataGenerator { - constructor(app, config) - { - app.get('/olympus/units', (req, res) => this.units(req, res)); - app.get('/olympus/weapons', (req, res) => this.weapons(req, res)); - app.get('/olympus/logs', (req, res) => this.logs(req, res)); - app.get('/olympus/bullseyes', (req, res) => this.bullseyes(req, res)); - app.get('/olympus/airbases', (req, res) => this.airbases(req, res)); - app.get('/olympus/mission', (req, res) => this.mission(req, res)); - app.get('/olympus/commands', (req, res) => this.command(req, res)); - app.put('/olympus', (req, res) => this.put(req, res)); - - app.use('/olympus', basicAuth({ - users: { - 'admin': config["authentication"]["gameMasterPassword"], - 'blue': config["authentication"]["blueCommanderPassword"], - 'red': config["authentication"]["redCommanderPassword"] - }, - })) - - - let baseData = { alive: true, human: false, controlled: true, coalition: 2, country: 0, unitName: "Cool guy", groupName: "Cool group 1", state: 13, task: "Being cool!", - hasTask: true, position: { lat: 37, lng: -116, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 45, track: 45, isActiveTanker: false, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, - desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, - formationOffset: { x: 0, y: 0, z: 0 }, - targetID: 0, - targetPosition: { lat: 0, lng: 0, alt: 0 }, - ROE: 1, - reactionToThreat: 1, - emissionsCountermeasures: 1, - TACAN: { isOn: false, XY: 'Y', callsign: 'TKR', channel: 40 }, - radio: { frequency: 124000000, callsign: 1, callsignNumber: 1 }, - generalSettings: { prohibitAA: false, prohibitAfterburner: false, prohibitAG: false, prohibitAirWpn: false, prohibitJettison: false }, - ammo: [], - contacts: [], - activePath: [], - isLeader: true - } - - - - // UNCOMMENT TO TEST ALL UNITS **************** - /* - var databases = Object.assign({}, aircraftDatabase, helicopterDatabase, groundUnitDatabase, navyUnitDatabase); - var t = Object.keys(databases).length; - var l = Math.floor(Math.sqrt(t)); - let latIdx = 0; - let lngIdx = 0; - let idx = 1; - console.log(l) - for (let name in databases) { - if (databases[name].enabled) { - DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); - DEMO_UNIT_DATA[idx].name = name; - DEMO_UNIT_DATA[idx].groupName = `Group-${idx}`; - DEMO_UNIT_DATA[idx].position.lat += latIdx / 5; - DEMO_UNIT_DATA[idx].position.lng += lngIdx / 5; - DEMO_UNIT_DATA[idx].coalition = Math.floor(Math.random() * 3) - - latIdx += 1; - if (latIdx === l) { - latIdx = 0; - lngIdx += 1; - } - - if (name in aircraftDatabase) - DEMO_UNIT_DATA[idx].category = "Aircraft"; - else if (name in helicopterDatabase) - DEMO_UNIT_DATA[idx].category = "Helicopter"; - else if (name in groundUnitDatabase) - DEMO_UNIT_DATA[idx].category = "GroundUnit"; - else if (name in navyUnitDatabase) - DEMO_UNIT_DATA[idx].category = "NavyUnit"; - - idx += 1; - } - } - - - */ - let idx = 1; - DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); - DEMO_UNIT_DATA[idx].name = "S_75M_Volhov"; - DEMO_UNIT_DATA[idx].groupName = `Group`; - DEMO_UNIT_DATA[idx].position.lat += idx / 100; - DEMO_UNIT_DATA[idx].category = "GroundUnit"; - DEMO_UNIT_DATA[idx].isLeader = true; - - idx += 1; - DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); - DEMO_UNIT_DATA[idx].name = "SNR_75V"; - DEMO_UNIT_DATA[idx].groupName = `Group`; - DEMO_UNIT_DATA[idx].position.lat += idx / 100; - DEMO_UNIT_DATA[idx].category = "GroundUnit"; - DEMO_UNIT_DATA[idx].isLeader = false; - - idx += 1; - DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); - DEMO_UNIT_DATA[idx].name = "Ural-4320 APA-5D"; - DEMO_UNIT_DATA[idx].groupName = `Group`; - DEMO_UNIT_DATA[idx].position.lat += idx / 100; - DEMO_UNIT_DATA[idx].category = "GroundUnit"; - DEMO_UNIT_DATA[idx].isLeader = false; - - - idx += 1; - DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); - DEMO_UNIT_DATA[idx].name = "F-14B"; - DEMO_UNIT_DATA[idx].groupName = `Group-1`; - DEMO_UNIT_DATA[idx].position.lat += idx / 100; - DEMO_UNIT_DATA[idx].category = "Aircraft"; - DEMO_UNIT_DATA[idx].isLeader = false; - - idx += 1; - DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); - DEMO_UNIT_DATA[idx].name = "Infantry AK"; - DEMO_UNIT_DATA[idx].groupName = `Group-2`; - DEMO_UNIT_DATA[idx].position.lat += idx / 100; - DEMO_UNIT_DATA[idx].category = "GroundUnit"; - DEMO_UNIT_DATA[idx].isLeader = true; - DEMO_UNIT_DATA[idx].coalition = 0; - DEMO_UNIT_DATA[idx].operateAs = 2; - - idx += 1; - DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); - DEMO_UNIT_DATA[idx].name = "Infantry AK"; - DEMO_UNIT_DATA[idx].groupName = `Group-3`; - DEMO_UNIT_DATA[idx].position.lat += idx / 100; - DEMO_UNIT_DATA[idx].category = "GroundUnit"; - DEMO_UNIT_DATA[idx].isLeader = true; - DEMO_UNIT_DATA[idx].coalition = 0; - DEMO_UNIT_DATA[idx].operateAs = 1; - - idx += 1; - DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); - DEMO_UNIT_DATA[idx].name = "KC-135"; - DEMO_UNIT_DATA[idx].groupName = `Group-4`; - DEMO_UNIT_DATA[idx].position.lat += idx / 100; - DEMO_UNIT_DATA[idx].category = "Aircraft"; - DEMO_UNIT_DATA[idx].isLeader = true; - - - this.startTime = Date.now(); - } - - units(req, res){ - var array = new Uint8Array(); - var time = Date.now(); - array = this.concat(array, this.uint64ToByteArray(BigInt(time))); - if (req.query["time"] == 0){ - for (let idx in DEMO_UNIT_DATA) { - const unit = DEMO_UNIT_DATA[idx]; - var dataIndex = 1; - array = this.concat(array, this.uint32ToByteArray(idx)); - array = this.appendString(array, unit.category, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.alive, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.human, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.controlled, dataIndex); dataIndex++; - array = this.appendUint16(array, unit.coalition, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.country, dataIndex); dataIndex++; - array = this.appendString(array, unit.name, dataIndex); dataIndex++; - array = this.appendString(array, unit.unitName, dataIndex); dataIndex++; - array = this.appendString(array, unit.groupName, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.state, dataIndex); dataIndex++; - array = this.appendString(array, unit.task, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.hasTask, dataIndex); dataIndex++; - array = this.appendCoordinates(array, unit.position, dataIndex); dataIndex++; - array = this.appendDouble(array, unit.speed, dataIndex); dataIndex++; - array = this.appendDouble(array, unit.horizontalVelocity, dataIndex); dataIndex++; - array = this.appendDouble(array, unit.verticalVelicity, dataIndex); dataIndex++; - array = this.appendDouble(array, unit.heading, dataIndex); dataIndex++; - array = this.appendDouble(array, unit.track, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.isActiveTanker, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.isActiveAWACS, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.onOff, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.followRoads, dataIndex); dataIndex++; - array = this.appendUint16(array, unit.fuel, dataIndex); dataIndex++; - array = this.appendDouble(array, unit.desiredSpeed, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.desiredSpeedType, dataIndex); dataIndex++; - array = this.appendDouble(array, unit.desiredAltitude, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.desiredAltitudeType, dataIndex); dataIndex++; - array = this.appendUint32(array, unit.leaderID, dataIndex); dataIndex++; - array = this.appendOffset(array, unit.formationOffset, dataIndex); dataIndex++; - array = this.appendUint32(array, unit.targetID, dataIndex); dataIndex++; - array = this.appendCoordinates(array, unit.targetPosition, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.ROE, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.reactionToThreat, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.emissionsCountermeasures, dataIndex); dataIndex++; - array = this.appendTACAN(array, unit.TACAN, dataIndex); dataIndex++; - array = this.appendRadio(array, unit.radio, dataIndex); dataIndex++; - array = this.appendRadio(array, unit.generalSettings, dataIndex); dataIndex++; - array = this.appendAmmo(array, unit.ammo, dataIndex); dataIndex++; - array = this.appendContacts(array, unit.contacts, dataIndex); dataIndex++; - array = this.appendActivePath(array, unit.activePath, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.isLeader, dataIndex); dataIndex++; - array = this.appendUint8(array, unit.operateAs, dataIndex); dataIndex++; - array = this.concat(array, this.uint8ToByteArray(255)); - } - } - res.end(Buffer.from(array, 'binary')); - }; - - weapons(req, res){ - var array = new Uint8Array(); - var time = Date.now(); - array = this.concat(array, this.uint64ToByteArray(BigInt(time))); - for (let idx in DEMO_WEAPONS_DATA) { - const weapon = DEMO_WEAPONS_DATA[idx]; - array = this.concat(array, this.uint32ToByteArray(idx)); - array = this.appendString(array, weapon.category, 1); - array = this.appendUint8(array, weapon.alive, 2); - array = this.appendUint16(array, weapon.coalition, 5); - array = this.appendString(array, weapon.name, 7); - array = this.appendCoordinates(array, weapon.position, 13); - array = this.appendDouble(array, weapon.speed, 14); - array = this.appendDouble(array, weapon.heading, 15); - array = this.concat(array, this.uint8ToByteArray(255)); - } - res.end(Buffer.from(array, 'binary')); - }; - - concat(array1, array2) { - var mergedArray = new Uint8Array(array1.length + array2.length); - mergedArray.set(array1); - mergedArray.set(array2, array1.length); - return mergedArray; - } - - uint8ToByteArray(number) { - var buffer = new ArrayBuffer(1); - var longNum = new Uint8Array(buffer); - longNum[0] = number; - return Array.from(new Uint8Array(buffer)); - } - - uint16ToByteArray(number) { - var buffer = new ArrayBuffer(2); - var longNum = new Uint16Array(buffer); - longNum[0] = number; - return Array.from(new Uint8Array(buffer)); - } - - uint32ToByteArray(number) { - var buffer = new ArrayBuffer(4); - var longNum = new Uint32Array(buffer); - longNum[0] = number; - return Array.from(new Uint8Array(buffer)); - } - - uint64ToByteArray(number) { - var buffer = new ArrayBuffer(8); - var longNum = new BigUint64Array(buffer); - longNum[0] = number; - return Array.from(new Uint8Array(buffer)); - } - - doubleToByteArray(number) { - var buffer = new ArrayBuffer(8); - var longNum = new Float64Array(buffer); - longNum[0] = number; - return Array.from(new Uint8Array(buffer)); - } - - appendUint8(array, number, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint8ToByteArray(number)); - return array; - } - - appendUint16(array, number, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint16ToByteArray(number)); - return array; - } - - appendUint32(array, number, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint32ToByteArray(number)); - return array; - } - - appendDouble(array, number, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.doubleToByteArray(number)); - return array; - } - - appendCoordinates(array, coordinates, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.doubleToByteArray(coordinates.lat)); - array = this.concat(array, this.doubleToByteArray(coordinates.lng)); - array = this.concat(array, this.doubleToByteArray(coordinates.alt)); - return array; - } - - appendOffset(array, offset, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.doubleToByteArray(offset.x)); - array = this.concat(array, this.doubleToByteArray(offset.y)); - array = this.concat(array, this.doubleToByteArray(offset.z)); - return array; - } - - appendString(array, string, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint16ToByteArray(string.length)); - array = this.concat(array, enc.encode(string)); - return array; - } - - padString(string, length) { - while (string.length < length) - string += " "; - return string.substring(0, length); - } - - appendTACAN(array, TACAN, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint8ToByteArray(TACAN.isOn)); - array = this.concat(array, this.uint8ToByteArray(TACAN.channel)); - array = this.concat(array, enc.encode(TACAN.XY)); - array = this.concat(array, enc.encode(this.padString(TACAN.callsign, 4))); - return array; - } - - appendRadio(array, radio, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint32ToByteArray(radio.frequency)); - array = this.concat(array, this.uint8ToByteArray(radio.callsign)); - array = this.concat(array, this.uint8ToByteArray(radio.callsignNumber)); - return array; - } - - appendGeneralSettings(array, generalSettings, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitAA)); - array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitAfterburner)); - array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitAG)); - array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitAirWpn)); - array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitJettison)); - return array; - } - - appendAmmo(array, ammo, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint16ToByteArray(ammo.length)); - ammo.forEach((element) => { - array = this.concat(array, this.uint16ToByteArray(element.quantity)); - array = this.concat(array, enc.encode(this.padString(element.name, 33))); - array = this.concat(array, this.uint8ToByteArray(element.guidance)); - array = this.concat(array, this.uint8ToByteArray(element.category)); - array = this.concat(array, this.uint8ToByteArray(element.missileCategory)); - }) - return array; - } - - appendContacts(array, contacts, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint16ToByteArray(contacts.length)); - contacts.forEach((element) => { - array = this.concat(array, this.uint32ToByteArray(element.ID)); - array = this.concat(array, this.uint8ToByteArray(element.detectionMethod)); - }) - return array; - } - - appendActivePath(array, activePath, datumIndex) { - array = this.concat(array, this.uint8ToByteArray(datumIndex)); - array = this.concat(array, this.uint16ToByteArray(activePath.length)); - activePath.forEach((element) => { - array = this.concat(array, this.doubleToByteArray(element.lat)); - array = this.concat(array, this.doubleToByteArray(element.lng)); - array = this.concat(array, this.doubleToByteArray(element.alt)); - }) - return array; - } - - logs(req, res){ - var ret = {logs: {"1": "I'm a log!", "2": "I'm a different log!"}}; - ret.time = Date.now(); - ret.frameRate = 60; - ret.load = 0; - res.send(JSON.stringify(ret)); - }; - - airbases(req, res){ - var ret = {airbases: { - ["0"]: { - callsign: "Nellis", - latitude: 37.3, - longitude: -115.8, - coalition: "neutral" - }, - ["1"]: { - callsign: "Red", - latitude: 37.3, - longitude: -115.75, - coalition: "red" - }, - ["2"]: { - callsign: "Blue", - latitude: 37.3, - longitude: -115.7, - coalition: "blue" - } - }}; - ret.time = Date.now(); - res.send(JSON.stringify(ret)); - }; - - bullseyes(req, res){ - var ret = {bullseyes: { - "0": { - latitude: 37.25, - longitude: -115.8, - coalition: "neutral" - }, - "1": { - latitude: 37.25, - longitude: -115.75, - coalition: "red" - }, - "2": { - latitude: 37.25, - longitude: -115.7, - coalition: "blue" - } - }}; - ret.time = Date.now(); - res.send(JSON.stringify(ret)); - }; - - mission(req, res){ - var ret = {mission: {theatre: "Nevada"}}; - ret.time = Date.now(); - - ret.mission.dateAndTime = { - time: { h: 10, m: 15, s: 34 }, - date: "", - elapsedTime: (Date.now() - this.startTime) / 1000, - startTime: 0 - } - - ret.mission.coalitions = { - red: [ - 'RUSSIA', - 'CHINA' - ], - blue: [ - 'UK', - 'USA' - ], - neutral: [ - 'ITALY' - ] - } - - ret.mission.commandModeOptions = { - restrictSpawns: true, - restrictToCoalition: true, - setupTime: 0, - spawnPoints: { - red: 400, - blue: 400 - }, - eras: ["WW2", "Early Cold War", "Late Cold War", "Modern"] - } - - var auth = req.get("Authorization"); - if (auth) { - var username = Buffer.from(auth.replace("Basic ", ""), 'base64').toString('binary').split(":")[0]; - switch (username) { - case "admin": - ret.mission.commandModeOptions.commandMode = "Game master"; - break - case "blue": - ret.mission.commandModeOptions.commandMode = "Blue commander"; - break; - case "red": - ret.mission.commandModeOptions.commandMode = "Red commander"; - break; - } - } - res.send(JSON.stringify(ret)); - } - - command(req, res) { - var ret = {commandExecuted: Math.random() > 0.5}; - res.send(JSON.stringify(ret)); - } - - put(req, res) { - var ret = {commandHash: Math.random().toString(36).slice(2, 19)} - res.send(JSON.stringify(ret)); - } - -} - -var demoDataGenerator = new DemoDataGenerator(app, config); - -module.exports = app; diff --git a/client/install.bat b/client/install.bat deleted file mode 100644 index 17139b43..00000000 --- a/client/install.bat +++ /dev/null @@ -1 +0,0 @@ -npm install --omit=dev \ No newline at end of file diff --git a/client/package-lock.json b/client/package-lock.json deleted file mode 100644 index 2daccc2a..00000000 --- a/client/package-lock.json +++ /dev/null @@ -1,9318 +0,0 @@ -{ - "name": "DCSOlympus", - "version": "v{{OLYMPUS_VERSION_NUMBER}}", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "DCSOlympus", - "version": "v{{OLYMPUS_VERSION_NUMBER}}", - "dependencies": { - "appjs": "^0.0.20", - "appjs-win32": "^0.0.19", - "body-parser": "^1.20.2", - "debug": "~2.6.9", - "ejs": "^3.1.8", - "electron": "^28.0.0", - "express": "^4.18.2", - "express-basic-auth": "^1.2.1", - "http-proxy-middleware": "^2.0.6", - "js-sha256": "^0.10.1", - "morgan": "~1.9.1", - "node-hide-console-window": "^2.2.0", - "open": "^10.0.0", - "prompt-sync": "^4.2.0", - "regedit": "^5.1.2", - "save": "^2.9.0", - "sha256": "^0.2.0", - "srtm-elevation": "^2.1.2", - "tcp-ping-port": "^1.0.1", - "uuid": "^9.0.1", - "yargs": "^17.7.2" - }, - "devDependencies": { - "@babel/preset-env": "^7.21.4", - "@tanem/svg-injector": "^10.1.68", - "@turf/turf": "^6.5.0", - "@types/formatcoords": "^1.1.0", - "@types/geojson": "^7946.0.10", - "@types/leaflet": "^1.9.0", - "@types/node": "^18.16.1", - "@types/sortablejs": "^1.15.0", - "@types/svg-injector": "^0.0.29", - "babelify": "^10.0.0", - "browserify": "^17.0.0", - "concurrently": "^7.6.0", - "cp": "^0.2.0", - "esmify": "^2.1.1", - "formatcoords": "^1.1.3", - "geodesy": "^1.1.2", - "leaflet": "^1.9.3", - "leaflet-control-mini-map": "^0.4.0", - "leaflet-gesture-handling": "^1.2.2", - "leaflet-path-drag": "*", - "leaflet.nauticscale": "^1.1.0", - "nodemon": "^3.0.2", - "requirejs": "^2.3.6", - "sortablejs": "^1.15.0", - "tsify": "^5.0.4", - "tslib": "latest", - "typescript": "^4.9.4", - "usng.js": "^0.4.5", - "watchify": "^4.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", - "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.6", - "@babel/parser": "^7.23.6", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", - "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.6", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", - "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", - "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", - "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.6", - "@babel/types": "^7.23.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", - "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", - "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.4", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.5", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", - "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", - "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.6", - "@babel/types": "^7.23.6", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@electron/get": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", - "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", - "dependencies": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "global-agent": "^3.0.0" - } - }, - "node_modules/@electron/get/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@electron/get/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@tanem/svg-injector": { - "version": "10.1.68", - "resolved": "https://registry.npmjs.org/@tanem/svg-injector/-/svg-injector-10.1.68.tgz", - "integrity": "sha512-UkJajeR44u73ujtr5GVSbIlELDWD/mzjqWe54YMK61ljKxFcJoPd9RBSaO7xj02ISCWUqJW99GjrS+sVF0UnrA==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.23.2", - "content-type": "^1.0.5", - "tslib": "^2.6.2" - } - }, - "node_modules/@turf/along": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz", - "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==", - "dev": true, - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/angle": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-6.5.0.tgz", - "integrity": "sha512-4pXMbWhFofJJAOvTMCns6N4C8CMd5Ih4O2jSAG9b3dDHakj3O4yN1+Zbm+NUei+eVEZ9gFeVp9svE3aMDenIkw==", - "dev": true, - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/area": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.5.0.tgz", - "integrity": "sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bbox": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", - "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bbox-clip": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-6.5.0.tgz", - "integrity": "sha512-F6PaIRF8WMp8EmgU/Ke5B1Y6/pia14UAYB5TiBC668w5rVVjy5L8rTm/m2lEkkDMHlzoP9vNY4pxpNthE7rLcQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bbox-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-6.5.0.tgz", - "integrity": "sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bearing": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz", - "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bezier-spline": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-6.5.0.tgz", - "integrity": "sha512-vokPaurTd4PF96rRgGVm6zYYC5r1u98ZsG+wZEv9y3kJTuJRX/O3xIY2QnTGTdbVmAJN1ouOsD0RoZYaVoXORQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-clockwise": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-6.5.0.tgz", - "integrity": "sha512-45+C7LC5RMbRWrxh3Z0Eihsc8db1VGBO5d9BLTOAwU4jR6SgsunTfRWR16X7JUwIDYlCVEmnjcXJNi/kIU3VIw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-contains": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-6.5.0.tgz", - "integrity": "sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-crosses": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-6.5.0.tgz", - "integrity": "sha512-gvshbTPhAHporTlQwBJqyfW+2yV8q/mOTxG6PzRVl6ARsqNoqYQWkd4MLug7OmAqVyBzLK3201uAeBjxbGw0Ng==", - "dev": true, - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/polygon-to-line": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-disjoint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-6.5.0.tgz", - "integrity": "sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g==", - "dev": true, - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/polygon-to-line": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-equal": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-6.5.0.tgz", - "integrity": "sha512-cY0M3yoLC26mhAnjv1gyYNQjn7wxIXmL2hBmI/qs8g5uKuC2hRWi13ydufE3k4x0aNRjFGlg41fjoYLwaVF+9Q==", - "dev": true, - "dependencies": { - "@turf/clean-coords": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "geojson-equality": "0.1.6" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-intersects": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-6.5.0.tgz", - "integrity": "sha512-nIxkizjRdjKCYFQMnml6cjPsDOBCThrt+nkqtSEcxkKMhAQj5OO7o2CecioNTaX8EayqwMGVKcsz27oP4mKPTw==", - "dev": true, - "dependencies": { - "@turf/boolean-disjoint": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-overlap": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-6.5.0.tgz", - "integrity": "sha512-8btMIdnbXVWUa1M7D4shyaSGxLRw6NjMcqKBcsTXcZdnaixl22k7ar7BvIzkaRYN3SFECk9VGXfLncNS3ckQUw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/line-overlap": "^6.5.0", - "@turf/meta": "^6.5.0", - "geojson-equality": "0.1.6" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-parallel": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-6.5.0.tgz", - "integrity": "sha512-aSHJsr1nq9e5TthZGZ9CZYeXklJyRgR5kCLm5X4urz7+MotMOp/LsGOsvKvK9NeUl9+8OUmfMn8EFTT8LkcvIQ==", - "dev": true, - "dependencies": { - "@turf/clean-coords": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-point-in-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz", - "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-point-on-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz", - "integrity": "sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-within": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-6.5.0.tgz", - "integrity": "sha512-YQB3oU18Inx35C/LU930D36RAVe7LDXk1kWsQ8mLmuqYn9YdPsDQTMTkLJMhoQ8EbN7QTdy333xRQ4MYgToteQ==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/buffer": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-6.5.0.tgz", - "integrity": "sha512-qeX4N6+PPWbKqp1AVkBVWFerGjMYMUyencwfnkCesoznU6qvfugFHNAngNqIBVnJjZ5n8IFyOf+akcxnrt9sNg==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/center": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/projection": "^6.5.0", - "d3-geo": "1.7.1", - "turf-jsts": "*" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center/-/center-6.5.0.tgz", - "integrity": "sha512-T8KtMTfSATWcAX088rEDKjyvQCBkUsLnK/Txb6/8WUXIeOZyHu42G7MkdkHRoHtwieLdduDdmPLFyTdG5/e7ZQ==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-mean": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-6.5.0.tgz", - "integrity": "sha512-AAX6f4bVn12pTVrMUiB9KrnV94BgeBKpyg3YpfnEbBpkN/znfVhL8dG8IxMAxAoSZ61Zt9WLY34HfENveuOZ7Q==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-median": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-6.5.0.tgz", - "integrity": "sha512-dT8Ndu5CiZkPrj15PBvslpuf01ky41DEYEPxS01LOxp5HOUHXp1oJxsPxvc+i/wK4BwccPNzU1vzJ0S4emd1KQ==", - "dev": true, - "dependencies": { - "@turf/center-mean": "^6.5.0", - "@turf/centroid": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-of-mass": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-6.5.0.tgz", - "integrity": "sha512-EWrriU6LraOfPN7m1jZi+1NLTKNkuIsGLZc2+Y8zbGruvUW+QV7K0nhf7iZWutlxHXTBqEXHbKue/o79IumAsQ==", - "dev": true, - "dependencies": { - "@turf/centroid": "^6.5.0", - "@turf/convex": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/centroid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.5.0.tgz", - "integrity": "sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/circle": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-6.5.0.tgz", - "integrity": "sha512-oU1+Kq9DgRnoSbWFHKnnUdTmtcRUMmHoV9DjTXu9vOLNV5OWtAAh1VZ+mzsioGGzoDNT/V5igbFOkMfBQc0B6A==", - "dev": true, - "dependencies": { - "@turf/destination": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clean-coords": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-6.5.0.tgz", - "integrity": "sha512-EMX7gyZz0WTH/ET7xV8MyrExywfm9qUi0/MY89yNffzGIEHuFfqwhcCqZ8O00rZIPZHUTxpmsxQSTfzJJA1CPw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clone": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-6.5.0.tgz", - "integrity": "sha512-mzVtTFj/QycXOn6ig+annKrM6ZlimreKYz6f/GSERytOpgzodbQyOgkfwru100O1KQhhjSudKK4DsQ0oyi9cTw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-6.5.0.tgz", - "integrity": "sha512-Y6gfnTJzQ1hdLfCsyd5zApNbfLIxYEpmDibHUqR5z03Lpe02pa78JtgrgUNt1seeO/aJ4TG1NLN8V5gOrHk04g==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters-dbscan": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-6.5.0.tgz", - "integrity": "sha512-SxZEE4kADU9DqLRiT53QZBBhu8EP9skviSyl+FGj08Y01xfICM/RR9ACUdM0aEQimhpu+ZpRVcUK+2jtiCGrYQ==", - "dev": true, - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0", - "density-clustering": "1.3.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters-kmeans": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-6.5.0.tgz", - "integrity": "sha512-DwacD5+YO8kwDPKaXwT9DV46tMBVNsbi1IzdajZu1JDSWoN7yc7N9Qt88oi+p30583O0UPVkAK+A10WAQv4mUw==", - "dev": true, - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "skmeans": "0.9.7" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/collect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-6.5.0.tgz", - "integrity": "sha512-4dN/T6LNnRg099m97BJeOcTA5fSI8cu87Ydgfibewd2KQwBexO69AnjEFqfPX3Wj+Zvisj1uAVIZbPmSSrZkjg==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "rbush": "2.x" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/combine": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-6.5.0.tgz", - "integrity": "sha512-Q8EIC4OtAcHiJB3C4R+FpB4LANiT90t17uOd851qkM2/o6m39bfN5Mv0PWqMZIHWrrosZqRqoY9dJnzz/rJxYQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/concave": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-6.5.0.tgz", - "integrity": "sha512-I/sUmUC8TC5h/E2vPwxVht+nRt+TnXIPRoztDFvS8/Y0+cBDple9inLSo9nnPXMXidrBlGXZ9vQx/BjZUJgsRQ==", - "dev": true, - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/tin": "^6.5.0", - "topojson-client": "3.x", - "topojson-server": "3.x" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/convex": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-6.5.0.tgz", - "integrity": "sha512-x7ZwC5z7PJB0SBwNh7JCeCNx7Iu+QSrH7fYgK0RhhNop13TqUlvHMirMLRgf2db1DqUetrAO2qHJeIuasquUWg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0", - "concaveman": "*" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/destination": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", - "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/difference": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-6.5.0.tgz", - "integrity": "sha512-l8iR5uJqvI+5Fs6leNbhPY5t/a3vipUF/3AeVLpwPQcgmedNXyheYuy07PcMGH5Jdpi5gItOiTqwiU/bUH4b3A==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/dissolve": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-6.5.0.tgz", - "integrity": "sha512-WBVbpm9zLTp0Bl9CE35NomTaOL1c4TQCtEoO43YaAhNEWJOOIhZMFJyr8mbvYruKl817KinT3x7aYjjCMjTAsQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", - "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance-weight": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-6.5.0.tgz", - "integrity": "sha512-a8qBKkgVNvPKBfZfEJZnC3DV7dfIsC3UIdpRci/iap/wZLH41EmS90nM+BokAJflUHYy8PqE44wySGWHN1FXrQ==", - "dev": true, - "dependencies": { - "@turf/centroid": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/ellipse": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-6.5.0.tgz", - "integrity": "sha512-kuXtwFviw/JqnyJXF1mrR/cb496zDTSbGKtSiolWMNImYzGGkbsAsFTjwJYgD7+4FixHjp0uQPzo70KDf3AIBw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0", - "@turf/transform-rotate": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/envelope": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-6.5.0.tgz", - "integrity": "sha512-9Z+FnBWvOGOU4X+fMZxYFs1HjFlkKqsddLuMknRaqcJd6t+NIv5DWvPtDL8ATD2GEExYDiFLwMdckfr1yqJgHA==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/bbox-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/explode": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-6.5.0.tgz", - "integrity": "sha512-6cSvMrnHm2qAsace6pw9cDmK2buAlw8+tjeJVXMfMyY+w7ZUi1rprWMsY92J7s2Dar63Bv09n56/1V7+tcj52Q==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/flatten": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-6.5.0.tgz", - "integrity": "sha512-IBZVwoNLVNT6U/bcUUllubgElzpMsNoCw8tLqBw6dfYg9ObGmpEjf9BIYLr7a2Yn5ZR4l7YIj2T7kD5uJjZADQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/flip": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-6.5.0.tgz", - "integrity": "sha512-oyikJFNjt2LmIXQqgOGLvt70RgE2lyzPMloYWM7OR5oIFGRiBvqVD2hA6MNw6JewIm30fWZ8DQJw1NHXJTJPbg==", - "dev": true, - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/great-circle": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-6.5.0.tgz", - "integrity": "sha512-7ovyi3HaKOXdFyN7yy1yOMa8IyOvV46RC1QOQTT+RYUN8ke10eyqExwBpL9RFUPvlpoTzoYbM/+lWPogQlFncg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "dev": true, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/hex-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-6.5.0.tgz", - "integrity": "sha512-Ln3tc2tgZT8etDOldgc6e741Smg1CsMKAz1/Mlel+MEL5Ynv2mhx3m0q4J9IB1F3a4MNjDeVvm8drAaf9SF33g==", - "dev": true, - "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/intersect": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/interpolate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-6.5.0.tgz", - "integrity": "sha512-LSH5fMeiGyuDZ4WrDJNgh81d2DnNDUVJtuFryJFup8PV8jbs46lQGfI3r1DJ2p1IlEJIz3pmAZYeTfMMoeeohw==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/centroid": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/hex-grid": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/point-grid": "^6.5.0", - "@turf/square-grid": "^6.5.0", - "@turf/triangle-grid": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/intersect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-6.5.0.tgz", - "integrity": "sha512-2legGJeKrfFkzntcd4GouPugoqPUjexPZnOvfez+3SfIMrHvulw8qV8u7pfVyn2Yqs53yoVCEjS5sEpvQ5YRQg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/invariant": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", - "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/isobands": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-6.5.0.tgz", - "integrity": "sha512-4h6sjBPhRwMVuFaVBv70YB7eGz+iw0bhPRnp+8JBdX1UPJSXhoi/ZF2rACemRUr0HkdVB/a1r9gC32vn5IAEkw==", - "dev": true, - "dependencies": { - "@turf/area": "^6.5.0", - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/explode": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "object-assign": "*" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/isolines": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-6.5.0.tgz", - "integrity": "sha512-6ElhiLCopxWlv4tPoxiCzASWt/jMRvmp6mRYrpzOm3EUl75OhHKa/Pu6Y9nWtCMmVC/RcWtiiweUocbPLZLm0A==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "object-assign": "*" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/kinks": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-6.5.0.tgz", - "integrity": "sha512-ViCngdPt1eEL7hYUHR2eHR662GvCgTc35ZJFaNR6kRtr6D8plLaDju0FILeFFWSc+o8e3fwxZEJKmFj9IzPiIQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/length": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz", - "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==", - "dev": true, - "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-arc": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-6.5.0.tgz", - "integrity": "sha512-I6c+V6mIyEwbtg9P9zSFF89T7QPe1DPTG3MJJ6Cm1MrAY0MdejwQKOpsvNl8LDU2ekHOlz2kHpPVR7VJsoMllA==", - "dev": true, - "dependencies": { - "@turf/circle": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-chunk": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-6.5.0.tgz", - "integrity": "sha512-i1FGE6YJaaYa+IJesTfyRRQZP31QouS+wh/pa6O3CC0q4T7LtHigyBSYjrbjSLfn2EVPYGlPCMFEqNWCOkC6zg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/length": "^6.5.0", - "@turf/line-slice-along": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-intersect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz", - "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "geojson-rbush": "3.x" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-offset": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-6.5.0.tgz", - "integrity": "sha512-CEXZbKgyz8r72qRvPchK0dxqsq8IQBdH275FE6o4MrBkzMcoZsfSjghtXzKaz9vvro+HfIXal0sTk2mqV1lQTw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-overlap": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-6.5.0.tgz", - "integrity": "sha512-xHOaWLd0hkaC/1OLcStCpfq55lPHpPNadZySDXYiYjEz5HXr1oKmtMYpn0wGizsLwrOixRdEp+j7bL8dPt4ojQ==", - "dev": true, - "dependencies": { - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/nearest-point-on-line": "^6.5.0", - "deep-equal": "1.x", - "geojson-rbush": "3.x" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-segment": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-6.5.0.tgz", - "integrity": "sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-slice": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-6.5.0.tgz", - "integrity": "sha512-vDqJxve9tBHhOaVVFXqVjF5qDzGtKWviyjbyi2QnSnxyFAmLlLnBfMX8TLQCAf2GxHibB95RO5FBE6I2KVPRuw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/nearest-point-on-line": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-slice-along": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-6.5.0.tgz", - "integrity": "sha512-KHJRU6KpHrAj+BTgTNqby6VCTnDzG6a1sJx/I3hNvqMBLvWVA2IrkR9L9DtsQsVY63IBwVdQDqiwCuZLDQh4Ng==", - "dev": true, - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-split": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-6.5.0.tgz", - "integrity": "sha512-/rwUMVr9OI2ccJjw7/6eTN53URtGThNSD5I0GgxyFXMtxWiloRJ9MTff8jBbtPWrRka/Sh2GkwucVRAEakx9Sw==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/nearest-point-on-line": "^6.5.0", - "@turf/square": "^6.5.0", - "@turf/truncate": "^6.5.0", - "geojson-rbush": "3.x" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-to-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-6.5.0.tgz", - "integrity": "sha512-qYBuRCJJL8Gx27OwCD1TMijM/9XjRgXH/m/TyuND4OXedBpIWlK5VbTIO2gJ8OCfznBBddpjiObLBrkuxTpN4Q==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/mask": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-6.5.0.tgz", - "integrity": "sha512-RQha4aU8LpBrmrkH8CPaaoAfk0Egj5OuXtv6HuCQnHeGNOQt3TQVibTA3Sh4iduq4EPxnZfDjgsOeKtrCA19lg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/meta": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", - "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/midpoint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-6.5.0.tgz", - "integrity": "sha512-MyTzV44IwmVI6ec9fB2OgZ53JGNlgOpaYl9ArKoF49rXpL84F9rNATndbe0+MQIhdkw8IlzA6xVP4lZzfMNVCw==", - "dev": true, - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/moran-index": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-6.5.0.tgz", - "integrity": "sha512-ItsnhrU2XYtTtTudrM8so4afBCYWNaB0Mfy28NZwLjB5jWuAsvyV+YW+J88+neK/ougKMTawkmjQqodNJaBeLQ==", - "dev": true, - "dependencies": { - "@turf/distance-weight": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/nearest-point": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-6.5.0.tgz", - "integrity": "sha512-fguV09QxilZv/p94s8SMsXILIAMiaXI5PATq9d7YWijLxWUj6Q/r43kxyoi78Zmwwh1Zfqz9w+bCYUAxZ5+euA==", - "dev": true, - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/nearest-point-on-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-6.5.0.tgz", - "integrity": "sha512-WthrvddddvmymnC+Vf7BrkHGbDOUu6Z3/6bFYUGv1kxw8tiZ6n83/VG6kHz4poHOfS0RaNflzXSkmCi64fLBlg==", - "dev": true, - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/nearest-point-to-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-6.5.0.tgz", - "integrity": "sha512-PXV7cN0BVzUZdjj6oeb/ESnzXSfWmEMrsfZSDRgqyZ9ytdiIj/eRsnOXLR13LkTdXVOJYDBuf7xt1mLhM4p6+Q==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/point-to-line-distance": "^6.5.0", - "object-assign": "*" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/planepoint": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-6.5.0.tgz", - "integrity": "sha512-R3AahA6DUvtFbka1kcJHqZ7DMHmPXDEQpbU5WaglNn7NaCQg9HB0XM0ZfqWcd5u92YXV+Gg8QhC8x5XojfcM4Q==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/point-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-6.5.0.tgz", - "integrity": "sha512-Iq38lFokNNtQJnOj/RBKmyt6dlof0yhaHEDELaWHuECm1lIZLY3ZbVMwbs+nXkwTAHjKfS/OtMheUBkw+ee49w==", - "dev": true, - "dependencies": { - "@turf/boolean-within": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/point-on-feature": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-6.5.0.tgz", - "integrity": "sha512-bDpuIlvugJhfcF/0awAQ+QI6Om1Y1FFYE8Y/YdxGRongivix850dTeXCo0mDylFdWFPGDo7Mmh9Vo4VxNwW/TA==", - "dev": true, - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/center": "^6.5.0", - "@turf/explode": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/nearest-point": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/point-to-line-distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-6.5.0.tgz", - "integrity": "sha512-opHVQ4vjUhNBly1bob6RWy+F+hsZDH9SA0UW36pIRzfpu27qipU18xup0XXEePfY6+wvhF6yL/WgCO2IbrLqEA==", - "dev": true, - "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/projection": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0", - "@turf/rhumb-distance": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/points-within-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-6.5.0.tgz", - "integrity": "sha512-YyuheKqjliDsBDt3Ho73QVZk1VXX1+zIA2gwWvuz8bR1HXOkcuwk/1J76HuFMOQI3WK78wyAi+xbkx268PkQzQ==", - "dev": true, - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/polygon-smooth": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-6.5.0.tgz", - "integrity": "sha512-LO/X/5hfh/Rk4EfkDBpLlVwt3i6IXdtQccDT9rMjXEP32tRgy0VMFmdkNaXoGlSSKf/1mGqLl4y4wHd86DqKbg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/polygon-tangents": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-6.5.0.tgz", - "integrity": "sha512-sB4/IUqJMYRQH9jVBwqS/XDitkEfbyqRy+EH/cMRJURTg78eHunvJ708x5r6umXsbiUyQU4eqgPzEylWEQiunw==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-within": "^6.5.0", - "@turf/explode": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/nearest-point": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/polygon-to-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz", - "integrity": "sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/polygonize": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-6.5.0.tgz", - "integrity": "sha512-a/3GzHRaCyzg7tVYHo43QUChCspa99oK4yPqooVIwTC61npFzdrmnywMv0S+WZjHZwK37BrFJGFrZGf6ocmY5w==", - "dev": true, - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/envelope": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/projection": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-6.5.0.tgz", - "integrity": "sha512-/Pgh9mDvQWWu8HRxqpM+tKz8OzgauV+DiOcr3FCjD6ubDnrrmMJlsf6fFJmggw93mtVPrZRL6yyi9aYCQBOIvg==", - "dev": true, - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/random": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/random/-/random-6.5.0.tgz", - "integrity": "sha512-8Q25gQ/XbA7HJAe+eXp4UhcXM9aOOJFaxZ02+XSNwMvY8gtWSCBLVqRcW4OhqilgZ8PeuQDWgBxeo+BIqqFWFQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rectangle-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-6.5.0.tgz", - "integrity": "sha512-yQZ/1vbW68O2KsSB3OZYK+72aWz/Adnf7m2CMKcC+aq6TwjxZjAvlbCOsNUnMAuldRUVN1ph6RXMG4e9KEvKvg==", - "dev": true, - "dependencies": { - "@turf/boolean-intersects": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rewind": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-6.5.0.tgz", - "integrity": "sha512-IoUAMcHWotBWYwSYuYypw/LlqZmO+wcBpn8ysrBNbazkFNkLf3btSDZMkKJO/bvOzl55imr/Xj4fi3DdsLsbzQ==", - "dev": true, - "dependencies": { - "@turf/boolean-clockwise": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rhumb-bearing": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-6.5.0.tgz", - "integrity": "sha512-jMyqiMRK4hzREjQmnLXmkJ+VTNTx1ii8vuqRwJPcTlKbNWfjDz/5JqJlb5NaFDcdMpftWovkW5GevfnuzHnOYA==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rhumb-destination": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-6.5.0.tgz", - "integrity": "sha512-RHNP1Oy+7xTTdRrTt375jOZeHceFbjwohPHlr9Hf68VdHHPMAWgAKqiX2YgSWDcvECVmiGaBKWus1Df+N7eE4Q==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rhumb-distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-6.5.0.tgz", - "integrity": "sha512-oKp8KFE8E4huC2Z1a1KNcFwjVOqa99isxNOwfo4g3SUABQ6NezjKDDrnvC4yI5YZ3/huDjULLBvhed45xdCrzg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/sample": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-6.5.0.tgz", - "integrity": "sha512-kSdCwY7el15xQjnXYW520heKUrHwRvnzx8ka4eYxX9NFeOxaFITLW2G7UtXb6LJK8mmPXI8Aexv23F2ERqzGFg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/sector": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-6.5.0.tgz", - "integrity": "sha512-cYUOkgCTWqa23SOJBqxoFAc/yGCUsPRdn/ovbRTn1zNTm/Spmk6hVB84LCKOgHqvSF25i0d2kWqpZDzLDdAPbw==", - "dev": true, - "dependencies": { - "@turf/circle": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/line-arc": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/shortest-path": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-6.5.0.tgz", - "integrity": "sha512-4de5+G7+P4hgSoPwn+SO9QSi9HY5NEV/xRJ+cmoFVRwv2CDsuOPDheHKeuIAhKyeKDvPvPt04XYWbac4insJMg==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/bbox-polygon": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/clean-coords": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/transform-scale": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/simplify": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-6.5.0.tgz", - "integrity": "sha512-USas3QqffPHUY184dwQdP8qsvcVH/PWBYdXY5am7YTBACaQOMAlf6AKJs9FT8jiO6fQpxfgxuEtwmox+pBtlOg==", - "dev": true, - "dependencies": { - "@turf/clean-coords": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/square": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/square/-/square-6.5.0.tgz", - "integrity": "sha512-BM2UyWDmiuHCadVhHXKIx5CQQbNCpOxB6S/aCNOCLbhCeypKX5Q0Aosc5YcmCJgkwO5BERCC6Ee7NMbNB2vHmQ==", - "dev": true, - "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/square-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-6.5.0.tgz", - "integrity": "sha512-mlR0ayUdA+L4c9h7p4k3pX6gPWHNGuZkt2c5II1TJRmhLkW2557d6b/Vjfd1z9OVaajb1HinIs1FMSAPXuuUrA==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/rectangle-grid": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/standard-deviational-ellipse": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-6.5.0.tgz", - "integrity": "sha512-02CAlz8POvGPFK2BKK8uHGUk/LXb0MK459JVjKxLC2yJYieOBTqEbjP0qaWhiBhGzIxSMaqe8WxZ0KvqdnstHA==", - "dev": true, - "dependencies": { - "@turf/center-mean": "^6.5.0", - "@turf/ellipse": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/points-within-polygon": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/tag": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-6.5.0.tgz", - "integrity": "sha512-XwlBvrOV38CQsrNfrxvBaAPBQgXMljeU0DV8ExOyGM7/hvuGHJw3y8kKnQ4lmEQcmcrycjDQhP7JqoRv8vFssg==", - "dev": true, - "dependencies": { - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/tesselate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-6.5.0.tgz", - "integrity": "sha512-M1HXuyZFCfEIIKkglh/r5L9H3c5QTEsnMBoZOFQiRnGPGmJWcaBissGb7mTFX2+DKE7FNWXh4TDnZlaLABB0dQ==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "earcut": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/tin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-6.5.0.tgz", - "integrity": "sha512-YLYikRzKisfwj7+F+Tmyy/LE3d2H7D4kajajIfc9mlik2+esG7IolsX/+oUz1biguDYsG0DUA8kVYXDkobukfg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/transform-rotate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-6.5.0.tgz", - "integrity": "sha512-A2Ip1v4246ZmpssxpcL0hhiVBEf4L8lGnSPWTgSv5bWBEoya2fa/0SnFX9xJgP40rMP+ZzRaCN37vLHbv1Guag==", - "dev": true, - "dependencies": { - "@turf/centroid": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0", - "@turf/rhumb-distance": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/transform-scale": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-6.5.0.tgz", - "integrity": "sha512-VsATGXC9rYM8qTjbQJ/P7BswKWXHdnSJ35JlV4OsZyHBMxJQHftvmZJsFbOqVtQnIQIzf2OAly6rfzVV9QLr7g==", - "dev": true, - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/center": "^6.5.0", - "@turf/centroid": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0", - "@turf/rhumb-distance": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/transform-translate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-6.5.0.tgz", - "integrity": "sha512-NABLw5VdtJt/9vSstChp93pc6oel4qXEos56RBMsPlYB8hzNTEKYtC146XJvyF4twJeeYS8RVe1u7KhoFwEM5w==", - "dev": true, - "dependencies": { - "@turf/clone": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/triangle-grid": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-6.5.0.tgz", - "integrity": "sha512-2jToUSAS1R1htq4TyLQYPTIsoy6wg3e3BQXjm2rANzw4wPQCXGOxrur1Fy9RtzwqwljlC7DF4tg0OnWr8RjmfA==", - "dev": true, - "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/intersect": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/truncate": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-6.5.0.tgz", - "integrity": "sha512-pFxg71pLk+eJj134Z9yUoRhIi8vqnnKvCYwdT4x/DQl/19RVdq1tV3yqOT3gcTQNfniteylL5qV1uTBDV5sgrg==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/turf": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-6.5.0.tgz", - "integrity": "sha512-ipMCPnhu59bh92MNt8+pr1VZQhHVuTMHklciQURo54heoxRzt1neNYZOBR6jdL+hNsbDGAECMuIpAutX+a3Y+w==", - "dev": true, - "dependencies": { - "@turf/along": "^6.5.0", - "@turf/angle": "^6.5.0", - "@turf/area": "^6.5.0", - "@turf/bbox": "^6.5.0", - "@turf/bbox-clip": "^6.5.0", - "@turf/bbox-polygon": "^6.5.0", - "@turf/bearing": "^6.5.0", - "@turf/bezier-spline": "^6.5.0", - "@turf/boolean-clockwise": "^6.5.0", - "@turf/boolean-contains": "^6.5.0", - "@turf/boolean-crosses": "^6.5.0", - "@turf/boolean-disjoint": "^6.5.0", - "@turf/boolean-equal": "^6.5.0", - "@turf/boolean-intersects": "^6.5.0", - "@turf/boolean-overlap": "^6.5.0", - "@turf/boolean-parallel": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/boolean-within": "^6.5.0", - "@turf/buffer": "^6.5.0", - "@turf/center": "^6.5.0", - "@turf/center-mean": "^6.5.0", - "@turf/center-median": "^6.5.0", - "@turf/center-of-mass": "^6.5.0", - "@turf/centroid": "^6.5.0", - "@turf/circle": "^6.5.0", - "@turf/clean-coords": "^6.5.0", - "@turf/clone": "^6.5.0", - "@turf/clusters": "^6.5.0", - "@turf/clusters-dbscan": "^6.5.0", - "@turf/clusters-kmeans": "^6.5.0", - "@turf/collect": "^6.5.0", - "@turf/combine": "^6.5.0", - "@turf/concave": "^6.5.0", - "@turf/convex": "^6.5.0", - "@turf/destination": "^6.5.0", - "@turf/difference": "^6.5.0", - "@turf/dissolve": "^6.5.0", - "@turf/distance": "^6.5.0", - "@turf/distance-weight": "^6.5.0", - "@turf/ellipse": "^6.5.0", - "@turf/envelope": "^6.5.0", - "@turf/explode": "^6.5.0", - "@turf/flatten": "^6.5.0", - "@turf/flip": "^6.5.0", - "@turf/great-circle": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/hex-grid": "^6.5.0", - "@turf/interpolate": "^6.5.0", - "@turf/intersect": "^6.5.0", - "@turf/invariant": "^6.5.0", - "@turf/isobands": "^6.5.0", - "@turf/isolines": "^6.5.0", - "@turf/kinks": "^6.5.0", - "@turf/length": "^6.5.0", - "@turf/line-arc": "^6.5.0", - "@turf/line-chunk": "^6.5.0", - "@turf/line-intersect": "^6.5.0", - "@turf/line-offset": "^6.5.0", - "@turf/line-overlap": "^6.5.0", - "@turf/line-segment": "^6.5.0", - "@turf/line-slice": "^6.5.0", - "@turf/line-slice-along": "^6.5.0", - "@turf/line-split": "^6.5.0", - "@turf/line-to-polygon": "^6.5.0", - "@turf/mask": "^6.5.0", - "@turf/meta": "^6.5.0", - "@turf/midpoint": "^6.5.0", - "@turf/moran-index": "^6.5.0", - "@turf/nearest-point": "^6.5.0", - "@turf/nearest-point-on-line": "^6.5.0", - "@turf/nearest-point-to-line": "^6.5.0", - "@turf/planepoint": "^6.5.0", - "@turf/point-grid": "^6.5.0", - "@turf/point-on-feature": "^6.5.0", - "@turf/point-to-line-distance": "^6.5.0", - "@turf/points-within-polygon": "^6.5.0", - "@turf/polygon-smooth": "^6.5.0", - "@turf/polygon-tangents": "^6.5.0", - "@turf/polygon-to-line": "^6.5.0", - "@turf/polygonize": "^6.5.0", - "@turf/projection": "^6.5.0", - "@turf/random": "^6.5.0", - "@turf/rewind": "^6.5.0", - "@turf/rhumb-bearing": "^6.5.0", - "@turf/rhumb-destination": "^6.5.0", - "@turf/rhumb-distance": "^6.5.0", - "@turf/sample": "^6.5.0", - "@turf/sector": "^6.5.0", - "@turf/shortest-path": "^6.5.0", - "@turf/simplify": "^6.5.0", - "@turf/square": "^6.5.0", - "@turf/square-grid": "^6.5.0", - "@turf/standard-deviational-ellipse": "^6.5.0", - "@turf/tag": "^6.5.0", - "@turf/tesselate": "^6.5.0", - "@turf/tin": "^6.5.0", - "@turf/transform-rotate": "^6.5.0", - "@turf/transform-scale": "^6.5.0", - "@turf/transform-translate": "^6.5.0", - "@turf/triangle-grid": "^6.5.0", - "@turf/truncate": "^6.5.0", - "@turf/union": "^6.5.0", - "@turf/unkink-polygon": "^6.5.0", - "@turf/voronoi": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/union": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/union/-/union-6.5.0.tgz", - "integrity": "sha512-igYWCwP/f0RFHIlC2c0SKDuM/ObBaqSljI3IdV/x71805QbIvY/BYGcJdyNcgEA6cylIGl/0VSlIbpJHZ9ldhw==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "polygon-clipping": "^0.15.3" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/unkink-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-6.5.0.tgz", - "integrity": "sha512-8QswkzC0UqKmN1DT6HpA9upfa1HdAA5n6bbuzHy8NJOX8oVizVAqfEPY0wqqTgboDjmBR4yyImsdPGUl3gZ8JQ==", - "dev": true, - "dependencies": { - "@turf/area": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0", - "rbush": "^2.0.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/voronoi": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-6.5.0.tgz", - "integrity": "sha512-C/xUsywYX+7h1UyNqnydHXiun4UPjK88VDghtoRypR9cLlb7qozkiLRphQxxsCM0KxyxpVPHBVQXdAL3+Yurow==", - "dev": true, - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0", - "d3-voronoi": "1.1.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/formatcoords": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/formatcoords/-/formatcoords-1.1.2.tgz", - "integrity": "sha512-fFGxlSIZmHRM+84FVpDj4aKj2ZMuCzxX5k2hKehCH6JTdoB76Sj7AXNM0dsWn+wO6guEPV3vs2sifhaEqUt/HQ==", - "dev": true - }, - "node_modules/@types/geojson": { - "version": "7946.0.13", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.13.tgz", - "integrity": "sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==", - "dev": true - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/leaflet": { - "version": "1.9.8", - "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.8.tgz", - "integrity": "sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==", - "dev": true, - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/node": { - "version": "18.19.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", - "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/sortablejs": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.7.tgz", - "integrity": "sha512-PvgWCx1Lbgm88FdQ6S7OGvLIjWS66mudKPlfdrWil0TjsO5zmoZmzoKiiwRShs1dwPgrlkr0N4ewuy0/+QUXYQ==", - "dev": true - }, - "node_modules/@types/svg-injector": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/svg-injector/-/svg-injector-0.0.29.tgz", - "integrity": "sha512-tNvoN0Xk2si6IfxQI/PqInipOuCyXkDZhCh9Vc4aFv/l1DhIBfTFbXRXYUHBAGXaUNMOCHEtg9475O9J+4NXOg==", - "dev": true - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/appjs": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/appjs/-/appjs-0.0.20.tgz", - "integrity": "sha512-hfHGp1MiT1kAk56Bxg/4luo3tG9bY1fm0jHomTDcbvlGKJkyj0Gto4peg6m2OtGbp4NAf8EkbknnaTHzrU3mmQ==", - "hasInstallScript": true, - "dependencies": { - "mime": ">=1.2.5" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/appjs-win32": { - "version": "0.0.19", - "resolved": "https://registry.npmjs.org/appjs-win32/-/appjs-win32-0.0.19.tgz", - "integrity": "sha512-ide+/pVBbT043Zxx5CQd2R8j2UIhOs4xV17rEf335ooujHtdvWphiyC3R81UWib9vKHEOY7dNlv91J9R/a7pVw==", - "os": [ - "win32" - ], - "engines": { - "node": ">=0.8" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", - "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.4", - "util": "^0.10.4" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", - "dev": true - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-import-to-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-import-to-require/-/babel-plugin-import-to-require-1.0.0.tgz", - "integrity": "sha512-dc843CwrFivjO8AVgxcHvxl0cb7J7Ed8ZGFP8+PjH3X1CnyzYtAU1WL1349m9Wc/+oqk4ETx2+cIEO2jlp3XyQ==", - "dev": true, - "dependencies": { - "babel-template": "^6.26.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", - "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.4", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.7", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", - "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.4", - "core-js-compat": "^3.33.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", - "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.4" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babelify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", - "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/basic-auth/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "optional": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", - "dev": true, - "dependencies": { - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "JSONStream": "^1.0.3", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - }, - "bin": { - "browser-pack": "bin/cmd.js" - } - }, - "node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "dependencies": { - "resolve": "^1.17.0" - } - }, - "node_modules/browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", - "dev": true, - "dependencies": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "browserify": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cached-path-relative": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", - "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001570", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", - "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", - "dev": true, - "dependencies": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - } - }, - "node_modules/combine-source-map/node_modules/convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concaveman": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz", - "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==", - "dev": true, - "dependencies": { - "point-in-polygon": "^1.1.0", - "rbush": "^3.0.1", - "robust-predicates": "^2.0.4", - "tinyqueue": "^2.0.3" - } - }, - "node_modules/concaveman/node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", - "dev": true - }, - "node_modules/concaveman/node_modules/rbush": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", - "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", - "dev": true, - "dependencies": { - "quickselect": "^2.0.0" - } - }, - "node_modules/concurrently": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", - "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.29.1", - "lodash": "^4.17.21", - "rxjs": "^7.0.0", - "shell-quote": "^1.7.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^17.3.1" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/concurrently/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concurrently/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-hex": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/convert-hex/-/convert-hex-0.1.0.tgz", - "integrity": "sha512-w20BOb1PiR/sEJdS6wNrUjF5CSfscZFUp7R9NSlXH8h2wynzXVEPFPJECAnkNylZ+cvf3p7TyRUHggDmrwXT9A==" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/convert-string": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/convert-string/-/convert-string-0.1.0.tgz", - "integrity": "sha512-1KX9ESmtl8xpT2LN2tFnKSbV4NiarbVi8DVb39ZriijvtTklyrT+4dT1wsGMHKD3CJUjXgvJzstm9qL9ICojGA==" - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/core-js-compat": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", - "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", - "dev": true, - "dependencies": { - "browserslist": "^4.22.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cp": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/cp/-/cp-0.2.0.tgz", - "integrity": "sha512-4ftCvShHjIZG/zzomHyunNpBof3sOFTTmU6s6q9DdqAL/ANqrKV3pr6Z6kVfBI4hjn59DFLImrBqn7GuuMqSZA==", - "dev": true - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/d3-array": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", - "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==", - "dev": true - }, - "node_modules/d3-geo": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz", - "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", - "dev": true, - "dependencies": { - "d3-array": "1" - } - }, - "node_modules/d3-voronoi": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", - "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==", - "dev": true - }, - "node_modules/dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "dev": true, - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/default-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.0.tgz", - "integrity": "sha512-EviRCeDkniKC30N3uKNHIaIsBZEo00ZOrxDZQmJwJeY2q6Uli5SwfmQ6wSf5aezcBS3PDHoQJl/XuAHEfMCJFg==", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "devOptional": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/density-clustering": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/density-clustering/-/density-clustering-1.3.0.tgz", - "integrity": "sha512-icpmBubVTwLnsaor9qH/4tG5+7+f61VcqMN3V3pm9sxxSCt2Jcs0zWOgwZW9ARJYaKD3FumIgHiMOcIMRRAzFQ==", - "dev": true - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/deps-sort": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", - "dev": true, - "dependencies": { - "JSONStream": "^1.0.3", - "shasum-object": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" - }, - "bin": { - "deps-sort": "bin/cmd.js" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "optional": true - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/dns-fast-resolver": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dns-fast-resolver/-/dns-fast-resolver-1.0.1.tgz", - "integrity": "sha512-eei8mRXJX2B486lVUICtMwN//Ze2QlNt6ZGRlym9bIxypkw7a2nRweukbLXCJNTiZcAsX2fdbdP/MFT/J/4EZg==", - "dependencies": { - "lodash": "^4.17.20" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" - }, - "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/electron": { - "version": "28.0.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-28.0.0.tgz", - "integrity": "sha512-eDhnCFBvG0PGFVEpNIEdBvyuGUBsFdlokd+CtuCe2ER3P+17qxaRfWRxMmksCOKgDHb5Wif5UxqOkZSlA4snlw==", - "hasInstallScript": true, - "dependencies": { - "@electron/get": "^2.0.0", - "@types/node": "^18.11.18", - "extract-zip": "^2.0.1" - }, - "bin": { - "electron": "cli.js" - }, - "engines": { - "node": ">= 12.20.55" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.615", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz", - "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "optional": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/esmify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/esmify/-/esmify-2.1.1.tgz", - "integrity": "sha512-GyOVgjG7sNyYB5Mbo15Ll4aGrcXZzZ3LI22rbLOjCI7L/wYelzQpBHRZkZkqbPNZ/QIRilcaHqzgNCLcEsi1lQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.2.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "babel-plugin-import-to-require": "^1.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "^1.6.2", - "duplexer2": "^0.1.4", - "through2": "^2.0.5" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/event-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-4.0.1.tgz", - "integrity": "sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==", - "dependencies": { - "duplexer": "^0.1.1", - "from": "^0.1.7", - "map-stream": "0.0.7", - "pause-stream": "^0.0.11", - "split": "^1.0.1", - "stream-combiner": "^0.2.2", - "through": "^2.3.8" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/events-intercept": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/events-intercept/-/events-intercept-2.0.0.tgz", - "integrity": "sha512-blk1va0zol9QOrdZt0rFXo5KMkNPVSp92Eju/Qz8THwKWKRKeE0T8Br/1aW6+Edkyq9xHYgYxn2QtOnUKPUp+Q==" - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express-basic-auth": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/express-basic-auth/-/express-basic-auth-1.2.1.tgz", - "integrity": "sha512-L6YQ1wQ/mNjVLAmK3AG1RK6VkokA1BIY6wmiH304Xtt/cLTps40EusZsU1Uop+v9lTDPxdtzbFmdXfFO3KEnwA==", - "dependencies": { - "basic-auth": "^2.0.1" - } - }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/formatcoords": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/formatcoords/-/formatcoords-1.1.3.tgz", - "integrity": "sha512-Ittg5/AsYFCOtcFGPLSmVpP56a8Ionmv4Ys69UmCAdvBnqVzvVVbkZMnjWEmXrZvnmoGQE8YI3RhnxbMQFdYSw==", - "dev": true - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/from": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", - "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==" - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/geodesy": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/geodesy/-/geodesy-1.1.3.tgz", - "integrity": "sha512-H/0XSd1KjKZGZ2YGZcOYzRyY/foYAawwTEumNSo+YUwf+u5d4CfvBRg2i2Qimrx9yUEjWR8hLvMnhghuVFN0Zg==", - "dev": true - }, - "node_modules/geojson-equality": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/geojson-equality/-/geojson-equality-0.1.6.tgz", - "integrity": "sha512-TqG8YbqizP3EfwP5Uw4aLu6pKkg6JQK9uq/XZ1lXQntvTHD1BBKJWhNpJ2M0ax6TuWMP3oyx6Oq7FCIfznrgpQ==", - "dev": true, - "dependencies": { - "deep-equal": "^1.0.0" - } - }, - "node_modules/geojson-rbush": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", - "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==", - "dev": true, - "dependencies": { - "@turf/bbox": "*", - "@turf/helpers": "6.x", - "@turf/meta": "6.x", - "@types/geojson": "7946.0.8", - "rbush": "^3.0.1" - } - }, - "node_modules/geojson-rbush/node_modules/@types/geojson": { - "version": "7946.0.8", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", - "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==", - "dev": true - }, - "node_modules/geojson-rbush/node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", - "dev": true - }, - "node_modules/geojson-rbush/node_modules/rbush": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", - "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", - "dev": true, - "dependencies": { - "quickselect": "^2.0.0" - } - }, - "node_modules/get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/global-agent/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/global-agent/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/global-agent/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "optional": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-middleware": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", - "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", - "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "@types/express": "^4.17.13" - }, - "peerDependenciesMeta": { - "@types/express": { - "optional": true - } - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/if-async": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/if-async/-/if-async-3.7.4.tgz", - "integrity": "sha512-BFEH2mZyeF6KZKaKLVPZ0wMjIiWOdjvZ7zbx8ENec0qfZhJwKFbX/4jKM5LTKyJEc/GOqUKiiJ2IFKT9yWrZqA==" - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", - "dev": true, - "dependencies": { - "source-map": "~0.5.3" - } - }, - "node_modules/insert-module-globals": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", - "dev": true, - "dependencies": { - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "JSONStream": "^1.0.3", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - }, - "bin": { - "insert-module-globals": "bin/cmd.js" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/jake": { - "version": "10.8.7", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", - "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jake/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jake/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jake/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jake/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/jake/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/jake/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-sha256": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.10.1.tgz", - "integrity": "sha512-5obBtsz9301ULlsgggLg542s/jqtddfOpV5KJc4hajc9JV8GeY2gZHSVpYBn4nWqAUTJ9v+xwtbJ1mIBgIH5Vw==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "optional": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, - "node_modules/leaflet": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", - "integrity": "sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==", - "dev": true - }, - "node_modules/leaflet-control-mini-map": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/leaflet-control-mini-map/-/leaflet-control-mini-map-0.4.0.tgz", - "integrity": "sha512-qnetYIYFqlrAbX7MaGsAkBsuA2fg3Z4xDRlEXJN1wSrnhNsIhQUzXt7Z3vapdEzx4r7VUqWTaqHYd7eY5C6Gfw==", - "dev": true, - "peerDependencies": { - "leaflet": ">=1.7.0" - } - }, - "node_modules/leaflet-gesture-handling": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/leaflet-gesture-handling/-/leaflet-gesture-handling-1.2.2.tgz", - "integrity": "sha512-Blf5V4PoNphWkzL7Y1qge+Spkd4OCQ2atjwUNhMhLIcjKzPcBH++x/lwOinaR9jSqLWqJ6oKYO8d0XdTffy4hQ==", - "dev": true - }, - "node_modules/leaflet-path-drag": { - "version": "1.8.0-beta.3", - "resolved": "https://registry.npmjs.org/leaflet-path-drag/-/leaflet-path-drag-1.8.0-beta.3.tgz", - "integrity": "sha512-kpZ6sPOKlR+m+VChIzZZ7XFH4C+VGTrAxgnM4UN5iYl7lJ00iDOxS+r717bDf/xFFHB6n2jpUp9vvzjjteMpeQ==", - "dev": true - }, - "node_modules/leaflet.nauticscale": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/leaflet.nauticscale/-/leaflet.nauticscale-1.1.0.tgz", - "integrity": "sha512-kJqOVuY0bk3CjSWb1CUYsjXiM+W1K0TrlJmMjl/wVubKK2y0PZ+XxkIyD6cxVsKQGlJvLGMvrSqaYdj5LW1O1Q==", - "dev": true - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/maketype": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/maketype/-/maketype-1.0.1.tgz", - "integrity": "sha512-0oGIyz3dzoUzcI7ZWD/XCJbVW8P95JLv2lWdA9t2ZGNSQJ3Pdhz6nJ82dfOLZSUKTaA8d8chg6sAJDMNxZwHMw==", - "dependencies": { - "esm": "^3.2.25" - } - }, - "node_modules/map-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", - "integrity": "sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==" - }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "optional": true, - "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/matcher/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/mime": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", - "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", - "funding": [ - "https://github.com/sponsors/broofa" - ], - "bin": { - "mime": "bin/cli.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/mingo": { - "version": "6.4.9", - "resolved": "https://registry.npmjs.org/mingo/-/mingo-6.4.9.tgz", - "integrity": "sha512-jsOiIEJ19UtTaWjNFN4CnuKWqELm2sINZcHqI/nmjezMvXthBIQOftJrlT85NuIDoSFc0vrbjD+GnrzEgYnPbA==" - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/module-deps": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", - "dev": true, - "dependencies": { - "browser-resolve": "^2.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.2.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "JSONStream": "^1.0.3", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "module-deps": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz", - "integrity": "sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==", - "dependencies": { - "basic-auth": "~2.0.0", - "debug": "2.6.9", - "depd": "~1.1.2", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-hide-console-window": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/node-hide-console-window/-/node-hide-console-window-2.2.0.tgz", - "integrity": "sha512-CNLpd14IJbDQqzl6ryrpc4tjB2modRV+OvKekuu0KvLhqBj7ybmDWTXxHexG6LRrWW55Hfky/ZyZheh0xVXxDg==", - "hasInstallScript": true, - "os": [ - "win32" - ] - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true - }, - "node_modules/nodemon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.0.2.tgz", - "integrity": "sha512-9qIN2LNTrEzpOPBaWHTm4Asy1LxXLSickZStAQ4IZe7zsoIpD/A7LWxhZV3t4Zu352uBcqVnRsDXSMR2Sc3lTA==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/nodemon/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/nodemon/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nodemon/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/nodemon/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "devOptional": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.0.0.tgz", - "integrity": "sha512-WDekhGCZ7VHBw6sNDzCl42rVL315m/K/A1lYiZO2nHXn9T4yPBXxvrZKYkVPtsCahD815yhFNR9/Wq608PdIaA==", - "dependencies": { - "default-browser": "^5.2.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "node_modules/outpipe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", - "integrity": "sha512-BnNY/RwnDrkmQdUa9U+OfN/Y7AWmKuUPCCd+hbRclZnnANvYpO72zp/a6Q4n829hPbdqEac31XCcsvlEvb+rtA==", - "dev": true, - "dependencies": { - "shell-quote": "^1.4.2" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", - "dev": true, - "dependencies": { - "path-platform": "~0.11.15" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, - "node_modules/pause-stream": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", - "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", - "dependencies": { - "through": "~2.3" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/point-in-polygon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", - "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==", - "dev": true - }, - "node_modules/polygon-clipping": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.7.tgz", - "integrity": "sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==", - "dev": true, - "dependencies": { - "robust-predicates": "^3.0.2", - "splaytree": "^3.1.0" - } - }, - "node_modules/polygon-clipping/node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", - "dev": true - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/prompt-sync": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/prompt-sync/-/prompt-sync-4.2.0.tgz", - "integrity": "sha512-BuEzzc5zptP5LsgV5MZETjDaKSWfchl5U9Luiu8SKp7iZWD5tZalOxvNcZRwv+d2phNFr8xlbxmFNcRKfJOzJw==", - "dependencies": { - "strip-ansi": "^5.0.0" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/quickselect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", - "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rbush": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", - "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", - "dev": true, - "dependencies": { - "quickselect": "^1.0.1" - } - }, - "node_modules/read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regedit": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/regedit/-/regedit-5.1.2.tgz", - "integrity": "sha512-pQpWqO/I40bMNoMO9kTQx3e5iK542kYcB/Z8X3Y7Hcri6ydc4KZ9ByUsEWFkBRMcwo+2irHuNK5s+pMGPr6VPw==", - "dependencies": { - "debug": "^4.1.0", - "if-async": "^3.7.4", - "stream-slicer": "0.0.6", - "through2": "^0.6.3" - } - }, - "node_modules/regedit/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/regedit/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" - }, - "node_modules/regedit/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/regedit/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/regedit/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" - }, - "node_modules/regedit/node_modules/through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requirejs": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", - "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", - "dev": true, - "bin": { - "r_js": "bin/r.js", - "r.js": "bin/r.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/robust-predicates": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz", - "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==", - "dev": true - }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/save": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/save/-/save-2.9.0.tgz", - "integrity": "sha512-eg8+g8CjvehE/2C6EbLdtK1pINVD27pcJLj4M9PjWWhoeha/y5bWf4dp/0RF+OzbKTcG1bae9qi3PAqiR8CJTg==", - "dependencies": { - "async": "^3.2.2", - "event-stream": "^4.0.1", - "lodash.assign": "^4.2.0", - "mingo": "^6.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "optional": true - }, - "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", - "dependencies": { - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "mime": "1.6.0", - "ms": "2.1.3", - "on-finished": "2.4.1", - "range-parser": "~1.2.1", - "statuses": "2.0.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "optional": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.18.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/sha256": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/sha256/-/sha256-0.2.0.tgz", - "integrity": "sha512-kTWMJUaez5iiT9CcMv8jSq6kMhw3ST0uRdcIWl3D77s6AsLXNXRp3heeqqfu5+Dyfu4hwpQnMzhqHh8iNQxw0w==", - "dependencies": { - "convert-hex": "~0.1.0", - "convert-string": "~0.1.0" - } - }, - "node_modules/shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.7" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/simple-update-notifier/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/skmeans": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", - "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==", - "dev": true - }, - "node_modules/sortablejs": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.1.tgz", - "integrity": "sha512-P5Cjvb0UG1ZVNiDPj/n4V+DinttXG6K8n7vM/HQf0C25K3YKQTQY6fsr/sEGsJGpQ9exmPxluHxKBc0mLKU1lQ==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, - "node_modules/splaytree": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.2.tgz", - "integrity": "sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==", - "dev": true - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "optional": true - }, - "node_modules/srtm-elevation": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/srtm-elevation/-/srtm-elevation-2.1.2.tgz", - "integrity": "sha512-VAYD86JwB4l4yXNJmlTVy5ryQBu0bq50rOvPqpNu4pbKwgPrc7QijjYFKKcM+AfnDvbmlaZv+qWWMGYg+mvBVg==", - "dependencies": { - "extend": "^3.0.2", - "lru-cache": "^6.0.0", - "node-fetch": "^2.6.1", - "promise": "^8.1.0", - "yauzl": "^2.10.0", - "yauzl-promise": "^2.1.3" - } - }, - "node_modules/srtm-elevation/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/srtm-elevation/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", - "dependencies": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", - "dev": true, - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-slicer": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/stream-slicer/-/stream-slicer-0.0.6.tgz", - "integrity": "sha512-QsY0LbweYE5L+e+iBQgtkM5WUIf7+kCMA/m2VULv8rEEDDnlDPsPvOHH4nli6uaZOKQEt64u65h0l/eeZo7lCw==" - }, - "node_modules/stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", - "dev": true, - "dependencies": { - "minimist": "^1.1.0" - } - }, - "node_modules/sumchecker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dependencies": { - "debug": "^4.1.0" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/sumchecker/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/sumchecker/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", - "dev": true, - "dependencies": { - "acorn-node": "^1.2.0" - } - }, - "node_modules/tcp-ping-port": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tcp-ping-port/-/tcp-ping-port-1.0.1.tgz", - "integrity": "sha512-YAlsmy6IMVIJpLF+/nXjcuzOfgKnqqsgwBhlHcakAjwE97VR4l21oviaobuhF+2Tcrfyr5VuNKRcz63d2Y14pw==", - "dependencies": { - "dns-fast-resolver": "^1.0.0", - "lodash": "^4.17.20", - "maketype": "^1.0.1" - }, - "engines": { - "node": ">=12.0" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", - "dev": true, - "dependencies": { - "process": "~0.11.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tinyqueue": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", - "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/topojson-client": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", - "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", - "dev": true, - "dependencies": { - "commander": "2" - }, - "bin": { - "topo2geo": "bin/topo2geo", - "topomerge": "bin/topomerge", - "topoquantize": "bin/topoquantize" - } - }, - "node_modules/topojson-server": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz", - "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==", - "dev": true, - "dependencies": { - "commander": "2" - }, - "bin": { - "geo2topo": "bin/geo2topo" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tsconfig": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", - "integrity": "sha512-Cq65A3kVp6BbsUgg9DRHafaGmbMb9EhAc7fjWvudNWKjkbWrt43FnrtZt6awshH1R0ocfF2Z0uxock3lVqEgOg==", - "dev": true, - "dependencies": { - "any-promise": "^1.3.0", - "parse-json": "^2.2.0", - "strip-bom": "^2.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tsify": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/tsify/-/tsify-5.0.4.tgz", - "integrity": "sha512-XAZtQ5OMPsJFclkZ9xMZWkSNyMhMxEPsz3D2zu79yoKorH9j/DT4xCloJeXk5+cDhosEibu4bseMVjyPOAyLJA==", - "dev": true, - "dependencies": { - "convert-source-map": "^1.1.0", - "fs.realpath": "^1.0.0", - "object-assign": "^4.1.0", - "semver": "^6.1.0", - "through2": "^2.0.0", - "tsconfig": "^5.0.3" - }, - "engines": { - "node": ">=0.12" - }, - "peerDependencies": { - "browserify": ">= 10.x", - "typescript": ">= 2.8" - } - }, - "node_modules/tsify/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, - "node_modules/turf-jsts": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/turf-jsts/-/turf-jsts-1.2.3.tgz", - "integrity": "sha512-Ja03QIJlPuHt4IQ2FfGex4F4JAr8m3jpaHbFbQrgwr7s7L6U8ocrHiF3J1+wf9jzhGKxvDeaCAnGDot8OjGFyA==", - "dev": true - }, - "node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", - "dev": true, - "bin": { - "umd": "bin/cli.js" - } - }, - "node_modules/undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - }, - "bin": { - "undeclared-identifiers": "bin.js" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", - "dev": true, - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.2" - } - }, - "node_modules/url/node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/usng.js": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/usng.js/-/usng.js-0.4.5.tgz", - "integrity": "sha512-JTJcFFDy/JqA5iiU8DqMOV5gJiL3ZdXH0hCKYaRMDbbredhFna5Ok4C1YDFU07mTGAgm+5FzHaaOzQnO/3BzWQ==", - "dev": true, - "bin": { - "usng-cli": "bin/cli.js" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/watchify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz", - "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==", - "dev": true, - "dependencies": { - "anymatch": "^3.1.0", - "browserify": "^17.0.0", - "chokidar": "^3.4.0", - "defined": "^1.0.0", - "outpipe": "^1.1.0", - "through2": "^4.0.2", - "xtend": "^4.0.2" - }, - "bin": { - "watchify": "bin/cmd.js" - }, - "engines": { - "node": ">= 8.10.0" - } - }, - "node_modules/watchify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/watchify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yauzl-clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/yauzl-clone/-/yauzl-clone-1.0.4.tgz", - "integrity": "sha512-igM2RRCf3k8TvZoxR2oguuw4z1xasOnA31joCqHIyLkeWrvAc2Jgay5ISQ2ZplinkoGaJ6orCz56Ey456c5ESA==", - "dependencies": { - "events-intercept": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yauzl-promise": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yauzl-promise/-/yauzl-promise-2.1.3.tgz", - "integrity": "sha512-A1pf6fzh6eYkK0L4Qp7g9jzJSDrM6nN0bOn5T0IbY4Yo3w+YkWlHFkJP7mzknMXjqusHFHlKsK2N+4OLsK2MRA==", - "dependencies": { - "yauzl": "^2.9.1", - "yauzl-clone": "^1.0.4" - }, - "engines": { - "node": ">=6" - } - } - } -} diff --git a/client/package.json b/client/package.json deleted file mode 100644 index da597c07..00000000 --- a/client/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "DCSOlympus", - "node-main": "./bin/www", - "main": "client.js", - "version": "{{OLYMPUS_VERSION_NUMBER}}", - "private": true, - "scripts": { - "build": "browserify .\\src\\index.ts --debug -o .\\public\\javascripts\\bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ] && copy.bat", - "build-release": "browserify .\\src\\index.ts -o .\\public\\javascripts\\bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ] && copy.bat", - "build-release-linux": "browserify ./src/index.ts -o ./public/javascripts/bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ] && ./copy.sh", - "emit-declarations": "tsc --project tsconfig.json --declaration --emitDeclarationOnly --outfile ./@types/olympus/index.d.ts", - "copy": "copy.bat", - "start": "node ./bin/www", - "debug": "npm run copy & concurrently --kill-others \"npm run watch\" \"nodemon --ignore ./public/databases/ ./bin/www -- --config ../moc_dcs/Config/olympus.json\"", - "watch": "watchify .\\src\\index.ts --debug -o .\\public\\javascripts\\bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ]", - "client": "electron ." - }, - "dependencies": { - "appjs": "^0.0.20", - "appjs-win32": "^0.0.19", - "body-parser": "^1.20.2", - "debug": "~2.6.9", - "ejs": "^3.1.8", - "electron": "^28.0.0", - "express": "^4.18.2", - "express-basic-auth": "^1.2.1", - "http-proxy-middleware": "^2.0.6", - "js-sha256": "^0.10.1", - "morgan": "~1.9.1", - "node-hide-console-window": "^2.2.0", - "open": "^10.0.0", - "prompt-sync": "^4.2.0", - "regedit": "^5.1.2", - "save": "^2.9.0", - "sha256": "^0.2.0", - "srtm-elevation": "^2.1.2", - "tcp-ping-port": "^1.0.1", - "uuid": "^9.0.1", - "yargs": "^17.7.2" - }, - "devDependencies": { - "@babel/preset-env": "^7.21.4", - "@tanem/svg-injector": "^10.1.68", - "@turf/turf": "^6.5.0", - "@types/formatcoords": "^1.1.0", - "@types/geojson": "^7946.0.10", - "@types/leaflet": "^1.9.0", - "@types/node": "^18.16.1", - "@types/sortablejs": "^1.15.0", - "@types/svg-injector": "^0.0.29", - "babelify": "^10.0.0", - "browserify": "^17.0.0", - "concurrently": "^7.6.0", - "cp": "^0.2.0", - "esmify": "^2.1.1", - "formatcoords": "^1.1.3", - "geodesy": "^1.1.2", - "leaflet": "^1.9.3", - "leaflet-control-mini-map": "^0.4.0", - "leaflet-gesture-handling": "^1.2.2", - "leaflet-path-drag": "*", - "leaflet.nauticscale": "^1.1.0", - "nodemon": "^3.0.2", - "requirejs": "^2.3.6", - "sortablejs": "^1.15.0", - "tsify": "^5.0.4", - "tslib": "latest", - "typescript": "^4.9.4", - "usng.js": "^0.4.5", - "watchify": "^4.0.0" - } -} diff --git a/client/plugins/_boilerplate/copy.bat b/client/plugins/_boilerplate/copy.bat deleted file mode 100644 index 73b65b51..00000000 --- a/client/plugins/_boilerplate/copy.bat +++ /dev/null @@ -1,8 +0,0 @@ -mkdir .\\..\\DCSOlympus\\client\\public\\plugins\\boilerplateplugin - -copy .\\index.js .\\..\\DCSOlympus\\client\\public\\plugins\\boilerplateplugin\\index.js -copy .\\plugin.json .\\..\\DCSOlympus\\client\\public\\plugins\\boilerplateplugin\\plugin.json -copy .\\style.css .\\..\\DCSOlympus\\client\\public\\plugins\\boilerplateplugin\\style.css - -mkdir .\\..\\DCSOlympus\\client\\public\\plugins\\boilerplateplugin\\images -copy .\\images\\*.* .\\..\\DCSOlympus\\client\\public\\plugins\\boilerplateplugin\\images\\ \ No newline at end of file diff --git a/client/plugins/controltips/copy.bat b/client/plugins/controltips/copy.bat deleted file mode 100644 index e0a9d89d..00000000 --- a/client/plugins/controltips/copy.bat +++ /dev/null @@ -1,5 +0,0 @@ -mkdir .\\..\\..\\public\\plugins\\controltipsplugin - -copy .\\index.js .\\..\\..\\public\\plugins\\controltipsplugin\\index.js -copy .\\plugin.json .\\..\\..\\public\\plugins\\controltipsplugin\\plugin.json -copy .\\style.css .\\..\\..\\public\\plugins\\controltipsplugin\\style.css \ No newline at end of file diff --git a/client/plugins/controltips/package-lock.json b/client/plugins/controltips/package-lock.json deleted file mode 100644 index 967172cf..00000000 --- a/client/plugins/controltips/package-lock.json +++ /dev/null @@ -1,6317 +0,0 @@ -{ - "name": "ControlTipsPlugin", - "version": "v0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "ControlTipsPlugin", - "version": "v0.0.1", - "devDependencies": { - "@babel/preset-env": "^7.21.4", - "@types/node": "^18.16.1", - "@types/sortablejs": "^1.15.0", - "babelify": "^10.0.0", - "browserify": "^17.0.0", - "concurrently": "^7.6.0", - "cp": "^0.2.0", - "esmify": "^2.1.1", - "nodemon": "^2.0.20", - "requirejs": "^2.3.6", - "sortablejs": "^1.15.0", - "tinyify": "^4.0.0", - "tsify": "^5.0.4", - "tslib": "latest", - "typescript": "^4.9.4", - "usng.js": "^0.4.5", - "watchify": "^4.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@babel/core/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/core/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", - "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/@babel/traverse/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@browserify/envify": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@browserify/envify/-/envify-6.0.0.tgz", - "integrity": "sha512-ovxHR0KTsRCyMNwD7MGV0+VCU1sT6Ds+itC4DaQHM41eUId+w5Jd0qlhLVoDkkIVBnkY3BAAM8yb2QfpBlHkPw==", - "dev": true, - "dependencies": { - "acorn-node": "^2.0.1", - "dash-ast": "^2.0.1", - "multisplice": "^1.0.0", - "through2": "^4.0.2" - }, - "bin": { - "envify": "bin/envify" - } - }, - "node_modules/@browserify/envify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@browserify/envify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/@browserify/uglifyify": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@browserify/uglifyify/-/uglifyify-6.0.0.tgz", - "integrity": "sha512-48M2a3novsgKhUSo/B3ja10awc7unliK1HfW6aYBJdLFQj3wXDx9BBJVfj6MVYERSQVEVjNHQQ7IK89h4MpCLw==", - "dev": true, - "dependencies": { - "convert-source-map": "^1.9.0", - "minimatch": "^3.0.2", - "terser": "^5.15.1", - "through2": "^4.0.2", - "xtend": "^4.0.1" - } - }, - "node_modules/@browserify/uglifyify/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@browserify/uglifyify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@browserify/uglifyify/node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@browserify/uglifyify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/@goto-bus-stop/common-shake": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@goto-bus-stop/common-shake/-/common-shake-2.4.0.tgz", - "integrity": "sha512-LO+7v+UbxE3IyAS4Suf/KYB7Zq9DEIHibwDe6Wph4apNEfDyyxP7BSxzRS/Qa9lUH5gsm9eL9nF8EE1E0/nQkQ==", - "dev": true, - "dependencies": { - "acorn-walk": "^7.0.0", - "debug": "^3.2.6", - "escope": "^3.6.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@types/node": { - "version": "18.18.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.11.tgz", - "integrity": "sha512-c1vku6qnTeujJneYH94/4aq73XrVcsJe35UPyAsSok1ijiKrkRzK+AxQPSpNMUnC03roWBBwJx/9I8V7lQoxmA==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/sortablejs": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.6.tgz", - "integrity": "sha512-/G23qmK63iBjke89C1KvyFGMC7sooH4OKPuhOhLZUttZJ49dw7y7oimqICFe2PHCdQ4Cfb9tsF/Xy8kYr1/nIg==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-2.0.1.tgz", - "integrity": "sha512-VLR5sHqjk+8c5hrKeP2fWaIHb8eewsoxnZ8r2qpwRHXMHuC7KyOPflnOx9dLssVQUurzJ7rO0OzIFjHcndafWw==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true, - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", - "dev": true - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", - "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.4", - "util": "^0.10.4" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", - "dev": true - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-import-to-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-import-to-require/-/babel-plugin-import-to-require-1.0.0.tgz", - "integrity": "sha512-dc843CwrFivjO8AVgxcHvxl0cb7J7Ed8ZGFP8+PjH3X1CnyzYtAU1WL1349m9Wc/+oqk4ETx2+cIEO2jlp3XyQ==", - "dev": true, - "dependencies": { - "babel-template": "^6.26.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babelify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", - "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", - "dev": true, - "dependencies": { - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "JSONStream": "^1.0.3", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - }, - "bin": { - "browser-pack": "bin/cmd.js" - } - }, - "node_modules/browser-pack-flat": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/browser-pack-flat/-/browser-pack-flat-3.5.0.tgz", - "integrity": "sha512-u3iJUjs+TC/NGIL2GLyIcn5ppoNZXhTWqSW/gQbGIGvQiXXCQQzr5VWfACFraXQn2JrDlyRnKLeOs5AWXzKI6A==", - "dev": true, - "dependencies": { - "combine-source-map": "^0.8.0", - "convert-source-map": "^1.5.1", - "count-lines": "^0.1.2", - "dedent": "^0.7.0", - "estree-is-member-expression": "^1.0.0", - "estree-is-require": "^1.0.0", - "esutils": "^2.0.2", - "JSONStream": "^1.3.2", - "path-parse": "^1.0.5", - "scope-analyzer": "^2.0.0", - "stream-combiner": "^0.2.2", - "through2": "^3.0.1", - "transform-ast": "^2.4.2", - "umd": "^3.0.3", - "wrap-comment": "^1.0.0" - }, - "bin": { - "browser-pack-flat": "cli.js" - } - }, - "node_modules/browser-pack-flat/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "dependencies": { - "resolve": "^1.17.0" - } - }, - "node_modules/browser-unpack": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/browser-unpack/-/browser-unpack-1.4.2.tgz", - "integrity": "sha512-uHkiY4bmXjjBBWoKH1aRnEGTQxUUCCcVtoJfH9w1lmGGjETY4u93Zk+GRYkCE/SRMrdoMTINQ/1/manr/3aMVA==", - "dev": true, - "dependencies": { - "acorn-node": "^1.5.2", - "concat-stream": "^1.5.0", - "minimist": "^1.1.1" - }, - "bin": { - "browser-unpack": "bin/cmd.js" - } - }, - "node_modules/browser-unpack/node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", - "dev": true, - "dependencies": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "browserify": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-sign/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "node_modules/bundle-collapser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/bundle-collapser/-/bundle-collapser-1.4.0.tgz", - "integrity": "sha512-Gd3K3+3KI1Utuk+gwAvuOVOjT/2XLGL8tU6FwDKk04LlOZkYfT0pwQllsG1Dv8RRhgcjNxZSDmmSXb0AOkwSwg==", - "dev": true, - "dependencies": { - "browser-pack": "^6.0.2", - "browser-unpack": "^1.1.0", - "concat-stream": "^1.5.0", - "falafel": "^2.1.0", - "minimist": "^1.1.1", - "through2": "^2.0.0" - }, - "bin": { - "bundle-collapser": "bin/cmd.js" - } - }, - "node_modules/cached-path-relative": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", - "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001563", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", - "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", - "dev": true, - "dependencies": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - } - }, - "node_modules/combine-source-map/node_modules/convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", - "dev": true - }, - "node_modules/combine-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/common-shakeify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/common-shakeify/-/common-shakeify-1.1.2.tgz", - "integrity": "sha512-r2zRKPCbCx1l9BT8nVGZssZXrH9jeLl5qfHKxUwSBT7Kr9l1jSjZsItZE/jXo+GYDyO3kQfsyV7Poid475MgWQ==", - "dev": true, - "dependencies": { - "@goto-bus-stop/common-shake": "^2.3.0", - "convert-source-map": "^1.5.1", - "through2": "^2.0.3", - "transform-ast": "^2.4.3", - "wrap-comment": "^1.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concurrently": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", - "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.29.1", - "lodash": "^4.17.21", - "rxjs": "^7.0.0", - "shell-quote": "^1.7.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^17.3.1" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/concurrently/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concurrently/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", - "dev": true, - "dependencies": { - "browserslist": "^4.22.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/count-lines": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/count-lines/-/count-lines-0.1.2.tgz", - "integrity": "sha512-YS8P4UYXX/hrDyLU3r/A5OcCNwdNbJFJckbe8j+x2Jhxsr2J4/rYl0sDwOljLZL7Uxc4s7mRSNcQD8dSjobz+g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cp": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/cp/-/cp-0.2.0.tgz", - "integrity": "sha512-4ftCvShHjIZG/zzomHyunNpBof3sOFTTmU6s6q9DdqAL/ANqrKV3pr6Z6kVfBI4hjn59DFLImrBqn7GuuMqSZA==", - "dev": true - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dash-ast": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", - "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==", - "dev": true - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deps-sort": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", - "dev": true, - "dependencies": { - "JSONStream": "^1.0.3", - "shasum-object": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" - }, - "bin": { - "deps-sort": "bin/cmd.js" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/detective/node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.589", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.589.tgz", - "integrity": "sha512-zF6y5v/YfoFIgwf2dDfAqVlPPsyQeWNpEWXbAlDUS8Ax4Z2VoiiZpAPC0Jm9hXEkJm2vIZpwB6rc4KnLTQffbQ==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "node_modules/es6-set": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", - "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "es6-iterator": "~2.0.3", - "es6-symbol": "^3.1.3", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/es6-set/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==", - "dev": true, - "dependencies": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/esmify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/esmify/-/esmify-2.1.1.tgz", - "integrity": "sha512-GyOVgjG7sNyYB5Mbo15Ll4aGrcXZzZ3LI22rbLOjCI7L/wYelzQpBHRZkZkqbPNZ/QIRilcaHqzgNCLcEsi1lQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.2.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "babel-plugin-import-to-require": "^1.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "^1.6.2", - "duplexer2": "^0.1.4", - "through2": "^2.0.5" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-is-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", - "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", - "dev": true - }, - "node_modules/estree-is-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-identifier/-/estree-is-identifier-1.0.0.tgz", - "integrity": "sha512-2BDRGrkQJV/NhCAmmE33A35WAaxq3WQaGHgQuD//7orGWfpFqj8Srkwvx0TH+20yIdOF1yMQwi8anv5ISec2AQ==", - "dev": true - }, - "node_modules/estree-is-member-expression": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz", - "integrity": "sha512-Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==", - "dev": true - }, - "node_modules/estree-is-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-require/-/estree-is-require-1.0.0.tgz", - "integrity": "sha512-oWxQdSEmnUwNZsDQYiBNpVxKEhMmsJQSSxnDrwsr1MWtooCLfhgzsNGzmokdmfK0EzEIS5V4LPvqxv1Kmb1vvA==", - "dev": true, - "dependencies": { - "estree-is-identifier": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dev": true, - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, - "node_modules/falafel": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", - "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "isarray": "^2.0.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/falafel/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/from2-string/-/from2-string-1.1.0.tgz", - "integrity": "sha512-m8vCh+KnXXXBtfF2VUbiYlQ+nczLcntB0BrtNgpmLkHylhObe9WF1b2LZjBBzrZzA6P4mkEla6ZYQoOUTG8cYA==", - "dev": true, - "dependencies": { - "from2": "^2.0.3" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", - "dev": true, - "dependencies": { - "source-map": "~0.5.3" - } - }, - "node_modules/inline-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/insert-module-globals": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", - "dev": true, - "dependencies": { - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "JSONStream": "^1.0.3", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - }, - "bin": { - "insert-module-globals": "bin/cmd.js" - } - }, - "node_modules/insert-module-globals/node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/insert-module-globals/node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz", - "integrity": "sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.1" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==", - "dev": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/merge-source-map/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/minify-stream": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minify-stream/-/minify-stream-2.1.0.tgz", - "integrity": "sha512-P5xE4EQRkn7Td54VGcgfDMFx1jmKPPIXCdcMfrbXS6cNHK4dO1LXwtYFb48hHrSmZfT+jlGImvHgSZEkbpNtCw==", - "dev": true, - "dependencies": { - "concat-stream": "^2.0.0", - "convert-source-map": "^1.5.0", - "duplexify": "^4.1.1", - "from2-string": "^1.1.0", - "terser": "^4.7.0", - "xtend": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minify-stream/node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/minify-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minify-stream/node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/module-deps": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", - "dev": true, - "dependencies": { - "browser-resolve": "^2.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.2.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "JSONStream": "^1.0.3", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "module-deps": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/multi-stage-sourcemap": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.3.1.tgz", - "integrity": "sha512-UiTLYjqeIoVnJHyWGskwMKIhtZKK9uXUjSTWuwatarrc0d2H/6MAVFdwvEA/aKOHamIn7z4tfvxjz+FYucFpNQ==", - "dev": true, - "dependencies": { - "source-map": "^0.1.34" - } - }, - "node_modules/multi-stage-sourcemap/node_modules/source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", - "dev": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/multisplice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/multisplice/-/multisplice-1.0.0.tgz", - "integrity": "sha512-KU5tVjIdTGsMb92JlWwEZCGrvtI1ku9G9GuNbWdQT/Ici1ztFXX0L8lWpbbC3pISVMfBNL56wdqplHvva2XSlA==", - "dev": true - }, - "node_modules/mutexify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz", - "integrity": "sha512-pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==", - "dev": true, - "dependencies": { - "queue-tick": "^1.0.0" - } - }, - "node_modules/nanobench": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nanobench/-/nanobench-2.1.1.tgz", - "integrity": "sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^0.1.2", - "chalk": "^1.1.3", - "mutexify": "^1.1.0", - "pretty-hrtime": "^1.0.2" - }, - "bin": { - "nanobench": "run.js", - "nanobench-compare": "compare.js" - } - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nodemon/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "node_modules/outpipe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", - "integrity": "sha512-BnNY/RwnDrkmQdUa9U+OfN/Y7AWmKuUPCCd+hbRclZnnANvYpO72zp/a6Q4n829hPbdqEac31XCcsvlEvb+rtA==", - "dev": true, - "dependencies": { - "shell-quote": "^1.4.2" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", - "dev": true, - "dependencies": { - "path-platform": "~0.11.15" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requirejs": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", - "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", - "dev": true, - "bin": { - "r_js": "bin/r.js", - "r.js": "bin/r.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/scope-analyzer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.2.tgz", - "integrity": "sha512-5cfCmsTYV/wPaRIItNxatw02ua/MThdIUNnUOCYp+3LSEJvnG804ANw2VLaavNILIfWXF1D1G2KNANkBBvInwQ==", - "dev": true, - "dependencies": { - "array-from": "^2.1.1", - "dash-ast": "^2.0.1", - "es6-map": "^0.1.5", - "es6-set": "^0.1.5", - "es6-symbol": "^3.1.1", - "estree-is-function": "^1.0.0", - "get-assigned-identifiers": "^1.1.0" - } - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.7" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", - "dev": true, - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", - "dev": true, - "dependencies": { - "minimist": "^1.1.0" - } - }, - "node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", - "dev": true, - "dependencies": { - "acorn-node": "^1.2.0" - } - }, - "node_modules/syntax-error/node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/terser": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", - "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", - "dev": true, - "dependencies": { - "commander": "~2.17.1", - "source-map": "~0.6.1", - "source-map-support": "~0.5.9" - }, - "bin": { - "terser": "bin/uglifyjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", - "dev": true, - "dependencies": { - "process": "~0.11.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tinyify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tinyify/-/tinyify-4.0.0.tgz", - "integrity": "sha512-jNDxImwUrJJAU2NyGG144J8aWx2ni39UuBo7ppCXFRmhSH0CbpWL4HgjNvrsAW05WQAgNZePwAlEemNuB+byaA==", - "dev": true, - "dependencies": { - "@browserify/envify": "^6.0.0", - "@browserify/uglifyify": "^6.0.0", - "browser-pack-flat": "^3.0.9", - "bundle-collapser": "^1.3.0", - "common-shakeify": "^1.1.1", - "minify-stream": "^2.0.1", - "multisplice": "^1.0.0", - "terser": "3.16.1", - "through2": "^4.0.2", - "unassertify": "^3.0.1" - } - }, - "node_modules/tinyify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tinyify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/transform-ast": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/transform-ast/-/transform-ast-2.4.4.tgz", - "integrity": "sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==", - "dev": true, - "dependencies": { - "acorn-node": "^1.3.0", - "convert-source-map": "^1.5.1", - "dash-ast": "^1.0.0", - "is-buffer": "^2.0.0", - "magic-string": "^0.23.2", - "merge-source-map": "1.0.4", - "nanobench": "^2.1.1" - } - }, - "node_modules/transform-ast/node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/transform-ast/node_modules/dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tsconfig": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", - "integrity": "sha512-Cq65A3kVp6BbsUgg9DRHafaGmbMb9EhAc7fjWvudNWKjkbWrt43FnrtZt6awshH1R0ocfF2Z0uxock3lVqEgOg==", - "dev": true, - "dependencies": { - "any-promise": "^1.3.0", - "parse-json": "^2.2.0", - "strip-bom": "^2.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tsify": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/tsify/-/tsify-5.0.4.tgz", - "integrity": "sha512-XAZtQ5OMPsJFclkZ9xMZWkSNyMhMxEPsz3D2zu79yoKorH9j/DT4xCloJeXk5+cDhosEibu4bseMVjyPOAyLJA==", - "dev": true, - "dependencies": { - "convert-source-map": "^1.1.0", - "fs.realpath": "^1.0.0", - "object-assign": "^4.1.0", - "semver": "^6.1.0", - "through2": "^2.0.0", - "tsconfig": "^5.0.3" - }, - "engines": { - "node": ">=0.12" - }, - "peerDependencies": { - "browserify": ">= 10.x", - "typescript": ">= 2.8" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", - "dev": true, - "bin": { - "umd": "bin/cli.js" - } - }, - "node_modules/unassert": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unassert/-/unassert-2.0.2.tgz", - "integrity": "sha512-P6OOg/aRdQmWH+b0g+T4U+9MgL+DG7w6oQPG+N3F2IMuvvd1WfZ5alT/Rjik2lMFVyhfACUxF7PGP1VCwSHlQA==", - "dev": true, - "dependencies": { - "estraverse": "^5.0.0" - } - }, - "node_modules/unassert/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/unassertify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unassertify/-/unassertify-3.0.1.tgz", - "integrity": "sha512-461ykSPY3oWU+39J5haiq7S/hcYy1oGJ2nHU92lqdL3jft+pSU6oAbb7o6VVmM7nZGLqppszgyzfpCnRBFgFtw==", - "dev": true, - "dependencies": { - "acorn": "^8.0.0", - "convert-source-map": "^1.1.1", - "escodegen": "^2.0.0", - "multi-stage-sourcemap": "^0.3.1", - "through": "^2.3.7", - "unassert": "^2.0.0" - } - }, - "node_modules/unassertify/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - }, - "bin": { - "undeclared-identifiers": "bin.js" - } - }, - "node_modules/undeclared-identifiers/node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/undeclared-identifiers/node_modules/dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", - "dev": true, - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.2" - } - }, - "node_modules/usng.js": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/usng.js/-/usng.js-0.4.5.tgz", - "integrity": "sha512-JTJcFFDy/JqA5iiU8DqMOV5gJiL3ZdXH0hCKYaRMDbbredhFna5Ok4C1YDFU07mTGAgm+5FzHaaOzQnO/3BzWQ==", - "dev": true, - "bin": { - "usng-cli": "bin/cli.js" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/watchify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz", - "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==", - "dev": true, - "dependencies": { - "anymatch": "^3.1.0", - "browserify": "^17.0.0", - "chokidar": "^3.4.0", - "defined": "^1.0.0", - "outpipe": "^1.1.0", - "through2": "^4.0.2", - "xtend": "^4.0.2" - }, - "bin": { - "watchify": "bin/cmd.js" - }, - "engines": { - "node": ">= 8.10.0" - } - }, - "node_modules/watchify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/watchify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-comment": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrap-comment/-/wrap-comment-1.0.1.tgz", - "integrity": "sha512-APccrMwl/ont0RHFTXNAQfM647duYYEfs6cngrIyTByTI0xbWnDnPSptFZhS68L4WCjt2ZxuhCFwuY6Pe88KZQ==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - } - } -} diff --git a/client/plugins/databasemanager/copy.bat b/client/plugins/databasemanager/copy.bat deleted file mode 100644 index 34127e37..00000000 --- a/client/plugins/databasemanager/copy.bat +++ /dev/null @@ -1,5 +0,0 @@ -mkdir .\\..\\..\\public\\plugins\\databasemanager - -copy .\\index.js .\\..\\..\\public\\plugins\\databasemanager\\index.js -copy .\\plugin.json .\\..\\..\\public\\plugins\\databasemanager\\plugin.json -copy .\\style.css .\\..\\..\\public\\plugins\\databasemanager\\style.css \ No newline at end of file diff --git a/client/plugins/databasemanager/package-lock.json b/client/plugins/databasemanager/package-lock.json deleted file mode 100644 index 5ff5edad..00000000 --- a/client/plugins/databasemanager/package-lock.json +++ /dev/null @@ -1,6214 +0,0 @@ -{ - "name": "DatabaseManagerPlugin", - "version": "v0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "DatabaseManagerPlugin", - "version": "v0.0.1", - "devDependencies": { - "@babel/preset-env": "^7.21.4", - "@types/node": "^18.16.1", - "@types/sortablejs": "^1.15.0", - "babelify": "^10.0.0", - "browserify": "^17.0.0", - "concurrently": "^7.6.0", - "cp": "^0.2.0", - "esmify": "^2.1.1", - "nodemon": "^2.0.20", - "requirejs": "^2.3.6", - "sortablejs": "^1.15.0", - "tinyify": "^4.0.0", - "tsify": "^5.0.4", - "tslib": "latest", - "typescript": "^4.9.4", - "usng.js": "^0.4.5", - "watchify": "^4.0.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.4", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", - "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", - "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", - "dev": true, - "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", - "dev": true, - "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", - "dev": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "core-js-compat": "^3.31.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", - "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, - "node_modules/@babel/runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", - "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@browserify/envify": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@browserify/envify/-/envify-6.0.0.tgz", - "integrity": "sha512-ovxHR0KTsRCyMNwD7MGV0+VCU1sT6Ds+itC4DaQHM41eUId+w5Jd0qlhLVoDkkIVBnkY3BAAM8yb2QfpBlHkPw==", - "dev": true, - "dependencies": { - "acorn-node": "^2.0.1", - "dash-ast": "^2.0.1", - "multisplice": "^1.0.0", - "through2": "^4.0.2" - }, - "bin": { - "envify": "bin/envify" - } - }, - "node_modules/@browserify/envify/node_modules/acorn-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-2.0.1.tgz", - "integrity": "sha512-VLR5sHqjk+8c5hrKeP2fWaIHb8eewsoxnZ8r2qpwRHXMHuC7KyOPflnOx9dLssVQUurzJ7rO0OzIFjHcndafWw==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/@browserify/envify/node_modules/dash-ast": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", - "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==", - "dev": true - }, - "node_modules/@browserify/envify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@browserify/envify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/@browserify/uglifyify": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@browserify/uglifyify/-/uglifyify-6.0.0.tgz", - "integrity": "sha512-48M2a3novsgKhUSo/B3ja10awc7unliK1HfW6aYBJdLFQj3wXDx9BBJVfj6MVYERSQVEVjNHQQ7IK89h4MpCLw==", - "dev": true, - "dependencies": { - "convert-source-map": "^1.9.0", - "minimatch": "^3.0.2", - "terser": "^5.15.1", - "through2": "^4.0.2", - "xtend": "^4.0.1" - } - }, - "node_modules/@browserify/uglifyify/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/@browserify/uglifyify/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/@browserify/uglifyify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@browserify/uglifyify/node_modules/terser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", - "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@browserify/uglifyify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/@goto-bus-stop/common-shake": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@goto-bus-stop/common-shake/-/common-shake-2.4.0.tgz", - "integrity": "sha512-LO+7v+UbxE3IyAS4Suf/KYB7Zq9DEIHibwDe6Wph4apNEfDyyxP7BSxzRS/Qa9lUH5gsm9eL9nF8EE1E0/nQkQ==", - "dev": true, - "dependencies": { - "acorn-walk": "^7.0.0", - "debug": "^3.2.6", - "escope": "^3.6.0" - } - }, - "node_modules/@goto-bus-stop/common-shake/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", - "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@types/node": { - "version": "18.18.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.13.tgz", - "integrity": "sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/sortablejs": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.7.tgz", - "integrity": "sha512-PvgWCx1Lbgm88FdQ6S7OGvLIjWS66mudKPlfdrWil0TjsO5zmoZmzoKiiwRShs1dwPgrlkr0N4ewuy0/+QUXYQ==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-node": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", - "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", - "dev": true, - "dependencies": { - "acorn": "^7.0.0", - "acorn-walk": "^7.0.0", - "xtend": "^4.0.2" - } - }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", - "dev": true, - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha512-GQTc6Uupx1FCavi5mPzBvVT7nEOeWMmUA9P95wpfpW1XwMSKs+KaymD5C2Up7KAUKg/mYwbsUYzdZWcoajlNZg==", - "dev": true - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", - "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", - "dev": true, - "dependencies": { - "object.assign": "^4.1.4", - "util": "^0.10.4" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "dev": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", - "dev": true - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-import-to-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-import-to-require/-/babel-plugin-import-to-require-1.0.0.tgz", - "integrity": "sha512-dc843CwrFivjO8AVgxcHvxl0cb7J7Ed8ZGFP8+PjH3X1CnyzYtAU1WL1349m9Wc/+oqk4ETx2+cIEO2jlp3XyQ==", - "dev": true, - "dependencies": { - "babel-template": "^6.26.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", - "dev": true, - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", - "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babelify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babelify/-/babelify-10.0.0.tgz", - "integrity": "sha512-X40FaxyH7t3X+JFAKvb1H9wooWKLRCi8pg3m8poqtdZaIng+bjzp9RvKQCvRjF9isHiPkXspbbXT/zwXLtwgwg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true, - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true - }, - "node_modules/browser-pack": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz", - "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==", - "dev": true, - "dependencies": { - "combine-source-map": "~0.8.0", - "defined": "^1.0.0", - "JSONStream": "^1.0.3", - "safe-buffer": "^5.1.1", - "through2": "^2.0.0", - "umd": "^3.0.0" - }, - "bin": { - "browser-pack": "bin/cmd.js" - } - }, - "node_modules/browser-pack-flat": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/browser-pack-flat/-/browser-pack-flat-3.5.0.tgz", - "integrity": "sha512-u3iJUjs+TC/NGIL2GLyIcn5ppoNZXhTWqSW/gQbGIGvQiXXCQQzr5VWfACFraXQn2JrDlyRnKLeOs5AWXzKI6A==", - "dev": true, - "dependencies": { - "combine-source-map": "^0.8.0", - "convert-source-map": "^1.5.1", - "count-lines": "^0.1.2", - "dedent": "^0.7.0", - "estree-is-member-expression": "^1.0.0", - "estree-is-require": "^1.0.0", - "esutils": "^2.0.2", - "JSONStream": "^1.3.2", - "path-parse": "^1.0.5", - "scope-analyzer": "^2.0.0", - "stream-combiner": "^0.2.2", - "through2": "^3.0.1", - "transform-ast": "^2.4.2", - "umd": "^3.0.3", - "wrap-comment": "^1.0.0" - }, - "bin": { - "browser-pack-flat": "cli.js" - } - }, - "node_modules/browser-pack-flat/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/browser-pack-flat/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", - "dev": true - }, - "node_modules/browser-resolve": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", - "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", - "dev": true, - "dependencies": { - "resolve": "^1.17.0" - } - }, - "node_modules/browser-unpack": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/browser-unpack/-/browser-unpack-1.4.2.tgz", - "integrity": "sha512-uHkiY4bmXjjBBWoKH1aRnEGTQxUUCCcVtoJfH9w1lmGGjETY4u93Zk+GRYkCE/SRMrdoMTINQ/1/manr/3aMVA==", - "dev": true, - "dependencies": { - "acorn-node": "^1.5.2", - "concat-stream": "^1.5.0", - "minimist": "^1.1.1" - }, - "bin": { - "browser-unpack": "bin/cmd.js" - } - }, - "node_modules/browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", - "dev": true, - "dependencies": { - "assert": "^1.4.0", - "browser-pack": "^6.0.1", - "browser-resolve": "^2.0.0", - "browserify-zlib": "~0.2.0", - "buffer": "~5.2.1", - "cached-path-relative": "^1.0.0", - "concat-stream": "^1.6.0", - "console-browserify": "^1.1.0", - "constants-browserify": "~1.0.0", - "crypto-browserify": "^3.0.0", - "defined": "^1.0.0", - "deps-sort": "^2.0.1", - "domain-browser": "^1.2.0", - "duplexer2": "~0.1.2", - "events": "^3.0.0", - "glob": "^7.1.0", - "has": "^1.0.0", - "htmlescape": "^1.1.0", - "https-browserify": "^1.0.0", - "inherits": "~2.0.1", - "insert-module-globals": "^7.2.1", - "JSONStream": "^1.0.3", - "labeled-stream-splicer": "^2.0.0", - "mkdirp-classic": "^0.5.2", - "module-deps": "^6.2.3", - "os-browserify": "~0.3.0", - "parents": "^1.0.1", - "path-browserify": "^1.0.0", - "process": "~0.11.0", - "punycode": "^1.3.2", - "querystring-es3": "~0.2.0", - "read-only-stream": "^2.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.1.4", - "shasum-object": "^1.0.0", - "shell-quote": "^1.6.1", - "stream-browserify": "^3.0.0", - "stream-http": "^3.0.0", - "string_decoder": "^1.1.1", - "subarg": "^1.0.0", - "syntax-error": "^1.1.1", - "through2": "^2.0.0", - "timers-browserify": "^1.0.1", - "tty-browserify": "0.0.1", - "url": "~0.11.0", - "util": "~0.12.0", - "vm-browserify": "^1.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "browserify": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", - "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", - "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", - "dev": true, - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "dev": true - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", - "dev": true - }, - "node_modules/bundle-collapser": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/bundle-collapser/-/bundle-collapser-1.4.0.tgz", - "integrity": "sha512-Gd3K3+3KI1Utuk+gwAvuOVOjT/2XLGL8tU6FwDKk04LlOZkYfT0pwQllsG1Dv8RRhgcjNxZSDmmSXb0AOkwSwg==", - "dev": true, - "dependencies": { - "browser-pack": "^6.0.2", - "browser-unpack": "^1.1.0", - "concat-stream": "^1.5.0", - "falafel": "^2.1.0", - "minimist": "^1.1.1", - "through2": "^2.0.0" - }, - "bin": { - "bundle-collapser": "bin/cmd.js" - } - }, - "node_modules/cached-path-relative": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz", - "integrity": "sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==", - "dev": true - }, - "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001564", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001564.tgz", - "integrity": "sha512-DqAOf+rhof+6GVx1y+xzbFPeOumfQnhYzVnZD6LAXijR77yPtm9mfOcqOnT3mpnJiZVT+kwLAFnRlZcIz+c6bg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/combine-source-map": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz", - "integrity": "sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==", - "dev": true, - "dependencies": { - "convert-source-map": "~1.1.0", - "inline-source-map": "~0.6.0", - "lodash.memoize": "~3.0.3", - "source-map": "~0.5.3" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/common-shakeify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/common-shakeify/-/common-shakeify-1.1.2.tgz", - "integrity": "sha512-r2zRKPCbCx1l9BT8nVGZssZXrH9jeLl5qfHKxUwSBT7Kr9l1jSjZsItZE/jXo+GYDyO3kQfsyV7Poid475MgWQ==", - "dev": true, - "dependencies": { - "@goto-bus-stop/common-shake": "^2.3.0", - "convert-source-map": "^1.5.1", - "through2": "^2.0.3", - "transform-ast": "^2.4.3", - "wrap-comment": "^1.0.1" - } - }, - "node_modules/common-shakeify/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concurrently": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz", - "integrity": "sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "date-fns": "^2.29.1", - "lodash": "^4.17.21", - "rxjs": "^7.0.0", - "shell-quote": "^1.7.3", - "spawn-command": "^0.0.2-1", - "supports-color": "^8.1.0", - "tree-kill": "^1.2.2", - "yargs": "^17.3.1" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/concurrently/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/concurrently/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/concurrently/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true - }, - "node_modules/convert-source-map": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", - "integrity": "sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==", - "dev": true - }, - "node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", - "dev": true, - "dependencies": { - "browserslist": "^4.22.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/count-lines": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/count-lines/-/count-lines-0.1.2.tgz", - "integrity": "sha512-YS8P4UYXX/hrDyLU3r/A5OcCNwdNbJFJckbe8j+x2Jhxsr2J4/rYl0sDwOljLZL7Uxc4s7mRSNcQD8dSjobz+g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cp": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/cp/-/cp-0.2.0.tgz", - "integrity": "sha512-4ftCvShHjIZG/zzomHyunNpBof3sOFTTmU6s6q9DdqAL/ANqrKV3pr6Z6kVfBI4hjn59DFLImrBqn7GuuMqSZA==", - "dev": true - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dash-ast": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz", - "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==", - "dev": true - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deps-sort": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz", - "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==", - "dev": true, - "dependencies": { - "JSONStream": "^1.0.3", - "shasum-object": "^1.0.0", - "subarg": "^1.0.0", - "through2": "^2.0.0" - }, - "bin": { - "deps-sort": "bin/cmd.js" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/detective": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz", - "integrity": "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.8.2", - "defined": "^1.0.0", - "minimist": "^1.2.6" - }, - "bin": { - "detective": "bin/detective.js" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true, - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/duplexer": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", - "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", - "dev": true - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.593", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.593.tgz", - "integrity": "sha512-c7+Hhj87zWmdpmjDONbvNKNo24tvmD4mjal1+qqTYTrlF0/sNpAcDlU0Ki84ftA/5yj3BF2QhSGEC0Rky6larg==", - "dev": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha512-mz3UqCh0uPCIqsw1SSAkB/p0rOzF/M0V++vyN7JqlPtSW/VsYgQBvVvqMLmfBuyMzTpLnNqi6JmcSizs4jy19A==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "node_modules/es6-set": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", - "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "es6-iterator": "~2.0.3", - "es6-symbol": "^3.1.3", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/es6-set/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha512-75IUQsusDdalQEW/G/2esa87J7raqdJF+Ca0/Xm5C3Q58Nr4yVYjZGp/P1+2xiEVgXRrA39dpRb8LcshajbqDQ==", - "dev": true, - "dependencies": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/esmify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/esmify/-/esmify-2.1.1.tgz", - "integrity": "sha512-GyOVgjG7sNyYB5Mbo15Ll4aGrcXZzZ3LI22rbLOjCI7L/wYelzQpBHRZkZkqbPNZ/QIRilcaHqzgNCLcEsi1lQ==", - "dev": true, - "dependencies": { - "@babel/core": "^7.2.2", - "@babel/plugin-syntax-async-generators": "^7.2.0", - "@babel/plugin-syntax-dynamic-import": "^7.2.0", - "@babel/plugin-syntax-object-rest-spread": "^7.2.0", - "@babel/plugin-transform-modules-commonjs": "^7.2.0", - "babel-plugin-import-to-require": "^1.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "^1.6.2", - "duplexer2": "^0.1.4", - "through2": "^2.0.5" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-is-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", - "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==", - "dev": true - }, - "node_modules/estree-is-identifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-identifier/-/estree-is-identifier-1.0.0.tgz", - "integrity": "sha512-2BDRGrkQJV/NhCAmmE33A35WAaxq3WQaGHgQuD//7orGWfpFqj8Srkwvx0TH+20yIdOF1yMQwi8anv5ISec2AQ==", - "dev": true - }, - "node_modules/estree-is-member-expression": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-member-expression/-/estree-is-member-expression-1.0.0.tgz", - "integrity": "sha512-Ec+X44CapIGExvSZN+pGkmr5p7HwUVQoPQSd458Lqwvaf4/61k/invHSh4BYK8OXnCkfEhWuIoG5hayKLQStIg==", - "dev": true - }, - "node_modules/estree-is-require": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/estree-is-require/-/estree-is-require-1.0.0.tgz", - "integrity": "sha512-oWxQdSEmnUwNZsDQYiBNpVxKEhMmsJQSSxnDrwsr1MWtooCLfhgzsNGzmokdmfK0EzEIS5V4LPvqxv1Kmb1vvA==", - "dev": true, - "dependencies": { - "estree-is-identifier": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dev": true, - "dependencies": { - "type": "^2.7.2" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true - }, - "node_modules/falafel": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", - "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==", - "dev": true, - "dependencies": { - "acorn": "^7.1.1", - "isarray": "^2.0.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/falafel/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "node_modules/from2-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/from2-string/-/from2-string-1.1.0.tgz", - "integrity": "sha512-m8vCh+KnXXXBtfF2VUbiYlQ+nczLcntB0BrtNgpmLkHylhObe9WF1b2LZjBBzrZzA6P4mkEla6ZYQoOUTG8cYA==", - "dev": true, - "dependencies": { - "from2": "^2.0.3" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-assigned-identifiers": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", - "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==", - "dev": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/htmlescape": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", - "integrity": "sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", - "dev": true - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/inline-source-map": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", - "integrity": "sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==", - "dev": true, - "dependencies": { - "source-map": "~0.5.3" - } - }, - "node_modules/insert-module-globals": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.1.tgz", - "integrity": "sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==", - "dev": true, - "dependencies": { - "acorn-node": "^1.5.2", - "combine-source-map": "^0.8.0", - "concat-stream": "^1.6.1", - "is-buffer": "^1.1.0", - "JSONStream": "^1.0.3", - "path-is-absolute": "^1.0.1", - "process": "~0.11.0", - "through2": "^2.0.0", - "undeclared-identifiers": "^1.1.2", - "xtend": "^4.0.0" - }, - "bin": { - "insert-module-globals": "bin/cmd.js" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dev": true, - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/labeled-stream-splicer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz", - "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "stream-splicer": "^2.0.0" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true - }, - "node_modules/lodash.memoize": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", - "integrity": "sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==", - "dev": true - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.23.2.tgz", - "integrity": "sha512-oIUZaAxbcxYIp4AyLafV6OVKoB3YouZs0UTCJ8mOKBHNyJgGDaMJ4TgA+VylJh6fx7EQCC52XkbURxxG9IoJXA==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.1" - } - }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/merge-source-map": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", - "integrity": "sha512-PGSmS0kfnTnMJCzJ16BLLCEe6oeYCamKFFdQKshi4BmM6FUwipjVOcBFGxqtQtirtAG4iZvHlqST9CpZKqlRjA==", - "dev": true, - "dependencies": { - "source-map": "^0.5.6" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/minify-stream": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minify-stream/-/minify-stream-2.1.0.tgz", - "integrity": "sha512-P5xE4EQRkn7Td54VGcgfDMFx1jmKPPIXCdcMfrbXS6cNHK4dO1LXwtYFb48hHrSmZfT+jlGImvHgSZEkbpNtCw==", - "dev": true, - "dependencies": { - "concat-stream": "^2.0.0", - "convert-source-map": "^1.5.0", - "duplexify": "^4.1.1", - "from2-string": "^1.1.0", - "terser": "^4.7.0", - "xtend": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minify-stream/node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/minify-stream/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/minify-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minify-stream/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/minify-stream/node_modules/terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "dependencies": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/module-deps": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.3.tgz", - "integrity": "sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==", - "dev": true, - "dependencies": { - "browser-resolve": "^2.0.0", - "cached-path-relative": "^1.0.2", - "concat-stream": "~1.6.0", - "defined": "^1.0.0", - "detective": "^5.2.0", - "duplexer2": "^0.1.2", - "inherits": "^2.0.1", - "JSONStream": "^1.0.3", - "parents": "^1.0.0", - "readable-stream": "^2.0.2", - "resolve": "^1.4.0", - "stream-combiner2": "^1.1.1", - "subarg": "^1.0.0", - "through2": "^2.0.0", - "xtend": "^4.0.0" - }, - "bin": { - "module-deps": "bin/cmd.js" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/multi-stage-sourcemap": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/multi-stage-sourcemap/-/multi-stage-sourcemap-0.3.1.tgz", - "integrity": "sha512-UiTLYjqeIoVnJHyWGskwMKIhtZKK9uXUjSTWuwatarrc0d2H/6MAVFdwvEA/aKOHamIn7z4tfvxjz+FYucFpNQ==", - "dev": true, - "dependencies": { - "source-map": "^0.1.34" - } - }, - "node_modules/multi-stage-sourcemap/node_modules/source-map": { - "version": "0.1.43", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", - "dev": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/multisplice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/multisplice/-/multisplice-1.0.0.tgz", - "integrity": "sha512-KU5tVjIdTGsMb92JlWwEZCGrvtI1ku9G9GuNbWdQT/Ici1ztFXX0L8lWpbbC3pISVMfBNL56wdqplHvva2XSlA==", - "dev": true - }, - "node_modules/mutexify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.4.0.tgz", - "integrity": "sha512-pbYSsOrSB/AKN5h/WzzLRMFgZhClWccf2XIB4RSMC8JbquiB0e0/SH5AIfdQMdyHmYtv4seU7yV/TvAwPLJ1Yg==", - "dev": true, - "dependencies": { - "queue-tick": "^1.0.0" - } - }, - "node_modules/nanobench": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nanobench/-/nanobench-2.1.1.tgz", - "integrity": "sha512-z+Vv7zElcjN+OpzAxAquUayFLGK3JI/ubCl0Oh64YQqsTGG09CGqieJVQw4ui8huDnnAgrvTv93qi5UaOoNj8A==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^0.1.2", - "chalk": "^1.1.3", - "mutexify": "^1.1.0", - "pretty-hrtime": "^1.0.2" - }, - "bin": { - "nanobench": "run.js", - "nanobench-compare": "compare.js" - } - }, - "node_modules/nanobench/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanobench/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanobench/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanobench/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanobench/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/nodemon": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", - "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", - "dev": true, - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^3.2.7", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^5.7.1", - "simple-update-notifier": "^1.0.7", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/nodemon/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", - "dev": true - }, - "node_modules/outpipe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/outpipe/-/outpipe-1.1.1.tgz", - "integrity": "sha512-BnNY/RwnDrkmQdUa9U+OfN/Y7AWmKuUPCCd+hbRclZnnANvYpO72zp/a6Q4n829hPbdqEac31XCcsvlEvb+rtA==", - "dev": true, - "dependencies": { - "shell-quote": "^1.4.2" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parents": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", - "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==", - "dev": true, - "dependencies": { - "path-platform": "~0.11.15" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "dev": true, - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-platform": { - "version": "0.11.15", - "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", - "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dev": true, - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/queue-tick": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", - "dev": true - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/read-only-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", - "integrity": "sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", - "dev": true - }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", - "dev": true, - "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requirejs": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.6.tgz", - "integrity": "sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg==", - "dev": true, - "bin": { - "r_js": "bin/r.js", - "r.js": "bin/r.js" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/scope-analyzer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.2.tgz", - "integrity": "sha512-5cfCmsTYV/wPaRIItNxatw02ua/MThdIUNnUOCYp+3LSEJvnG804ANw2VLaavNILIfWXF1D1G2KNANkBBvInwQ==", - "dev": true, - "dependencies": { - "array-from": "^2.1.1", - "dash-ast": "^2.0.1", - "es6-map": "^0.1.5", - "es6-set": "^0.1.5", - "es6-symbol": "^3.1.1", - "estree-is-function": "^1.0.0", - "get-assigned-identifiers": "^1.1.0" - } - }, - "node_modules/scope-analyzer/node_modules/dash-ast": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", - "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==", - "dev": true - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dev": true, - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/shasum-object": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz", - "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.7" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-update-notifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", - "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", - "dev": true, - "dependencies": { - "semver": "~7.0.0" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/simple-update-notifier/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==", - "dev": true - }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "node_modules/spawn-command": { - "version": "0.0.2-1", - "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", - "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", - "dev": true - }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "dev": true, - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-combiner": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", - "integrity": "sha512-6yHMqgLYDzQDcAkL+tjJDC5nSNuNIx0vZtRZeiPh7Saef7VHX9H5Ijn9l2VIol2zaNYlYEX6KyuT/237A58qEQ==", - "dev": true, - "dependencies": { - "duplexer": "~0.1.1", - "through": "~2.3.4" - } - }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", - "dev": true, - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-http": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", - "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", - "dev": true, - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "xtend": "^4.0.2" - } - }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "node_modules/stream-splicer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz", - "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "dev": true, - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/subarg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", - "integrity": "sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==", - "dev": true, - "dependencies": { - "minimist": "^1.1.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/syntax-error": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", - "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", - "dev": true, - "dependencies": { - "acorn-node": "^1.2.0" - } - }, - "node_modules/terser": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-3.16.1.tgz", - "integrity": "sha512-JDJjgleBROeek2iBcSNzOHLKsB/MdDf+E/BOAJ0Tk9r7p9/fVobfv7LMJ/g/k3v9SXdmjZnIlFd5nfn/Rt0Xow==", - "dev": true, - "dependencies": { - "commander": "~2.17.1", - "source-map": "~0.6.1", - "source-map-support": "~0.5.9" - }, - "bin": { - "terser": "bin/uglifyjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/terser/node_modules/commander": { - "version": "2.17.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", - "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", - "dev": true - }, - "node_modules/terser/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/timers-browserify": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", - "integrity": "sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==", - "dev": true, - "dependencies": { - "process": "~0.11.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tinyify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tinyify/-/tinyify-4.0.0.tgz", - "integrity": "sha512-jNDxImwUrJJAU2NyGG144J8aWx2ni39UuBo7ppCXFRmhSH0CbpWL4HgjNvrsAW05WQAgNZePwAlEemNuB+byaA==", - "dev": true, - "dependencies": { - "@browserify/envify": "^6.0.0", - "@browserify/uglifyify": "^6.0.0", - "browser-pack-flat": "^3.0.9", - "bundle-collapser": "^1.3.0", - "common-shakeify": "^1.1.1", - "minify-stream": "^2.0.1", - "multisplice": "^1.0.0", - "terser": "3.16.1", - "through2": "^4.0.2", - "unassertify": "^3.0.1" - } - }, - "node_modules/tinyify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tinyify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/touch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", - "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", - "dev": true, - "dependencies": { - "nopt": "~1.0.10" - }, - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/transform-ast": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/transform-ast/-/transform-ast-2.4.4.tgz", - "integrity": "sha512-AxjeZAcIOUO2lev2GDe3/xZ1Q0cVGjIMk5IsriTy8zbWlsEnjeB025AhkhBJHoy997mXpLd4R+kRbvnnQVuQHQ==", - "dev": true, - "dependencies": { - "acorn-node": "^1.3.0", - "convert-source-map": "^1.5.1", - "dash-ast": "^1.0.0", - "is-buffer": "^2.0.0", - "magic-string": "^0.23.2", - "merge-source-map": "1.0.4", - "nanobench": "^2.1.1" - } - }, - "node_modules/transform-ast/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/transform-ast/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tsconfig": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", - "integrity": "sha512-Cq65A3kVp6BbsUgg9DRHafaGmbMb9EhAc7fjWvudNWKjkbWrt43FnrtZt6awshH1R0ocfF2Z0uxock3lVqEgOg==", - "dev": true, - "dependencies": { - "any-promise": "^1.3.0", - "parse-json": "^2.2.0", - "strip-bom": "^2.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "node_modules/tsify": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/tsify/-/tsify-5.0.4.tgz", - "integrity": "sha512-XAZtQ5OMPsJFclkZ9xMZWkSNyMhMxEPsz3D2zu79yoKorH9j/DT4xCloJeXk5+cDhosEibu4bseMVjyPOAyLJA==", - "dev": true, - "dependencies": { - "convert-source-map": "^1.1.0", - "fs.realpath": "^1.0.0", - "object-assign": "^4.1.0", - "semver": "^6.1.0", - "through2": "^2.0.0", - "tsconfig": "^5.0.3" - }, - "engines": { - "node": ">=0.12" - }, - "peerDependencies": { - "browserify": ">= 10.x", - "typescript": ">= 2.8" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/tty-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", - "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==", - "dev": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/umd": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz", - "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==", - "dev": true, - "bin": { - "umd": "bin/cli.js" - } - }, - "node_modules/unassert": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unassert/-/unassert-2.0.2.tgz", - "integrity": "sha512-P6OOg/aRdQmWH+b0g+T4U+9MgL+DG7w6oQPG+N3F2IMuvvd1WfZ5alT/Rjik2lMFVyhfACUxF7PGP1VCwSHlQA==", - "dev": true, - "dependencies": { - "estraverse": "^5.0.0" - } - }, - "node_modules/unassert/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/unassertify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unassertify/-/unassertify-3.0.1.tgz", - "integrity": "sha512-461ykSPY3oWU+39J5haiq7S/hcYy1oGJ2nHU92lqdL3jft+pSU6oAbb7o6VVmM7nZGLqppszgyzfpCnRBFgFtw==", - "dev": true, - "dependencies": { - "acorn": "^8.0.0", - "convert-source-map": "^1.1.1", - "escodegen": "^2.0.0", - "multi-stage-sourcemap": "^0.3.1", - "through": "^2.3.7", - "unassert": "^2.0.0" - } - }, - "node_modules/unassertify/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/undeclared-identifiers": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz", - "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==", - "dev": true, - "dependencies": { - "acorn-node": "^1.3.0", - "dash-ast": "^1.0.0", - "get-assigned-identifiers": "^1.2.0", - "simple-concat": "^1.0.0", - "xtend": "^4.0.1" - }, - "bin": { - "undeclared-identifiers": "bin.js" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", - "dev": true, - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.2" - } - }, - "node_modules/usng.js": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/usng.js/-/usng.js-0.4.5.tgz", - "integrity": "sha512-JTJcFFDy/JqA5iiU8DqMOV5gJiL3ZdXH0hCKYaRMDbbredhFna5Ok4C1YDFU07mTGAgm+5FzHaaOzQnO/3BzWQ==", - "dev": true, - "bin": { - "usng-cli": "bin/cli.js" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "node_modules/watchify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/watchify/-/watchify-4.0.0.tgz", - "integrity": "sha512-2Z04dxwoOeNxa11qzWumBTgSAohTC0+ScuY7XMenPnH+W2lhTcpEOJP4g2EIG/SWeLadPk47x++Yh+8BqPM/lA==", - "dev": true, - "dependencies": { - "anymatch": "^3.1.0", - "browserify": "^17.0.0", - "chokidar": "^3.4.0", - "defined": "^1.0.0", - "outpipe": "^1.1.0", - "through2": "^4.0.2", - "xtend": "^4.0.2" - }, - "bin": { - "watchify": "bin/cmd.js" - }, - "engines": { - "node": ">= 8.10.0" - } - }, - "node_modules/watchify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/watchify/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", - "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.4", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-comment": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wrap-comment/-/wrap-comment-1.0.1.tgz", - "integrity": "sha512-APccrMwl/ont0RHFTXNAQfM647duYYEfs6cngrIyTByTI0xbWnDnPSptFZhS68L4WCjt2ZxuhCFwuY6Pe88KZQ==", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - } - } -} diff --git a/client/public/databases/units/default/aircraftdatabase.json b/client/public/databases/units/default/aircraftdatabase.json deleted file mode 100644 index 1eeed1ee..00000000 --- a/client/public/databases/units/default/aircraftdatabase.json +++ /dev/null @@ -1,33295 +0,0 @@ -{ - "A-10C_2": { - "name": "A-10C_2", - "coalition": "blue", - "era": "Late Cold War", - "label": "A-10C Warthog 2", - "shortLabel": "A10", - "loadouts": [ - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2, AGM-65H*2, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", - "name": "AGM-65D*2, AGM-65H*2, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,GBU-12,GBU-38,MK82*3,MK82AIR*3,MK5*7,TGP,AM-9*2", - "name": "AGM-65D*2,AGM-65H*2,GBU-12,GBU-38,MK82*3,MK82AIR*3,MK5*7,TGP,AM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK151*7", - "name": "AGM-65D*2,AGM-65H*2,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK151*7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", - "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,TGP,ECM", - "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*6,CBU-87*2,Mk151*7,AIM-9*2,TGP,ECM", - "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*6,CBU-87*2,Mk151*7,AIM-9*2,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,TGP, ECM, AIM-9*2", - "name": "AGM-65D*2,AGM-65H*2,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - }, - { - "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,Mk-82*6,AIM-9*2,ECM", - "name": "AGM-65D*2,Mk-82*6,AIM-9*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 3 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*3, AGM-65H*3, CBU-97*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*3, AGM-65H*3, CBU-97*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "CBU-105 - 10 x SFW, CBU with WCMD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*4, CBU-105*2,CBU-97*2, TGP, ECM, AIM-9*2", - "name": "AGM-65D*4, CBU-105*2,CBU-97*2, TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-105 - 10 x SFW, CBU with WCMD", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*4, CBU-105*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*4, CBU-105*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*4, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", - "name": "AGM-65D*4, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "AGM-65D*4, CBU-97*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*4, CBU-97*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,GBU-12*2,GBU-38,Mk-82,AIM-9,TGP,ECM", - "name": "AGM-65D*4,GBU-12*2,GBU-38,Mk-82,AIM-9,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK5*7", - "name": "AGM-65D*4,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK5*7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,Mk-82*6,CBU-87*2,TGP,AIM-9*2,Mk151*7", - "name": "AGM-65D*4,Mk-82*6,CBU-87*2,TGP,AIM-9*2,Mk151*7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", - "name": "AGM-65D*4,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*6, CBU-97*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*6, CBU-97*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*6,GBU-12*4,AIM-9M*2,ECM,TGP", - "name": "AGM-65D*6,GBU-12*4,AIM-9M*2,ECM,TGP", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 7 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65G,AGM-65D,Mk-82*7,AIM-9*2,ECM", - "name": "AGM-65G,AGM-65D,Mk-82*7,AIM-9*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 1 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65G,AGM-65K,GBU-10*2,AIM-9*2,TGP,ECM", - "name": "AGM-65G,AGM-65K,GBU-10*2,AIM-9*2,TGP,ECM", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 2 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65G*2,GBU-31*2,AIM-9*2,TGP,ECM", - "name": "AGM-65G*2,GBU-31*2,AIM-9*2,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65H*4, CBU-97*4,TGP, ECM, AIM-9*2", - "name": "AGM-65H*4, CBU-97*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65K*2,GBU-12*8,AIM-9M*2.ECM,TGP", - "name": "AGM-65K*2,GBU-12*8,AIM-9M*2.ECM,TGP", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65K*2,GBU-38*4,AIM-9*2,TGP,ECM", - "name": "AGM-65K*2,GBU-38*4,AIM-9*2,TGP,ECM", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-105 - 10 x SFW, CBU with WCMD", - "quantity": 4 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65L*2,CBU-105*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", - "name": "AGM-65L*2,CBU-105*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", - "name": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,TGP", - "name": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65L*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,ECM,TGP", - "name": "AGM-65L*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,ECM,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-33*12, TGP, CAP-9*1", - "name": "BDU-33*12, TGP, CAP-9*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", - "quantity": 2 - }, - { - "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-117 with TGM-65D - Trg Round for Mav D (IIR)", - "quantity": 1 - }, - { - "name": "LAU-117 with TGM-65H - Trg Round for Mav H (CCD)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-33*6, TGM-65H, TGM-65D, TGP, BDU-50LGB*2, CAP-9*1", - "name": "BDU-33*6, TGM-65H, TGM-65D, TGP, BDU-50LGB*2, CAP-9*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-33*6, TGP, CAP-9*1", - "name": "BDU-33*6, TGP, CAP-9*1", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "BDU-50LD - 500lb Inert Practice Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-33*6, TGP, CAP-9*1, BDU-50LD*2", - "name": "BDU-33*6, TGP, CAP-9*1, BDU-50LD*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "BDU-50HD - 500lb Inert Practice Bomb HD", - "quantity": 2 - }, - { - "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk61, Practice", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-50HD*2,BDU-50LGB*2,TGP, CAP-9*1", - "name": "BDU-50HD*2,BDU-50LGB*2,TGP, CAP-9*1", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "BDU-50HD - 500lb Inert Practice Bomb HD", - "quantity": 6 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk1, Practice", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-50HD*6,Mk1*7,TGP, CAP-9*1", - "name": "BDU-50HD*6,Mk1*7,TGP, CAP-9*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "BDU-50HD - 500lb Inert Practice Bomb HD", - "quantity": 2 - }, - { - "name": "BDU-50LD - 500lb Inert Practice Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-117 with CATM-65K - Captive Trg Round for Mav K (CCD)", - "quantity": 1 - }, - { - "name": "LAU-117 with TGM-65G - Trg Round for Mav G (IIR)", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts WTU-1/B, Practice", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-50LD*2, BDU-50HD*2,CATM-65K, TGM-65G, TGP, CAP-9*1", - "name": "BDU-50LD*2, BDU-50HD*2,CATM-65K, TGM-65G, TGP, CAP-9*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "CBU-103 - 202 x CEM, CBU with WCMD", - "quantity": 4 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "CBU-103*4, M151*14, AIM-9*2, ECM", - "name": "CBU-103*4, M151*14, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "CBU-87*2, M151*14, MK-82AIR*6, AIM-9*2,ECM", - "name": "CBU-87*2, M151*14, MK-82AIR*6, AIM-9*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 4 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "CBU-87*4, M151*28, AIM-9*2,ECM", - "name": "CBU-87*4, M151*28, AIM-9*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "CBU-87*4, M151*42, AIM-9*2, ECM", - "name": "CBU-87*4, M151*42, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-10*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-10*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-12*14,TGP, AIM-9*2", - "name": "GBU-12*14,TGP, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-12*2,GBU-38*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-12*2,GBU-38*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-12*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-12*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-12*6,GBU-10*2,TGP, AIM-9*2", - "name": "GBU-12*6,GBU-10*2,TGP, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-31*2,GBU-38*2, AGM-65H*2, AIM-9*2,TGP, ECM", - "name": "GBU-31*2,GBU-38*2, AGM-65H*2, AIM-9*2,TGP, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-31*2,GBU-38*4,AIM-9*2,TGP,ECM, AIM-9*2", - "name": "GBU-31*2,GBU-38*4,AIM-9*2,TGP,ECM, AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-31*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-31*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-38*4,GBU-31*2,TGP, AIM-9*2", - "name": "GBU-38*4,GBU-31*2,TGP, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "LAU-117 with AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-38*4,M151 APKWS*7,AGM-65D*1,AGM-65H*1,TGP,AIM-9*2,ECM", - "name": "GBU-38*4,M151 APKWS*7,AGM-65D*1,AGM-65H*1,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-38*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-38*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "GBU-54(V)1/B - LJDAM, 500lb Laser & GPS Guided Bomb LD", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-54*4,M151 APKWS*7,AGM-65D*4,TGP,AIM-9*2,ECM", - "name": "GBU-54*4,M151 APKWS*7,AGM-65D*4,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-54(V)1/B - LJDAM, 500lb Laser & GPS Guided Bomb LD", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-54*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-54*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-131 pods - 21 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "LAU-131 98 rkt M156 WP, AIM-9*2,ECM", - "name": "LAU-131 98 rkt M156 WP, AIM-9*2,ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 6 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "LAU-68 42 rkt M156 WP, AIM-9*2, ECM", - "name": "LAU-68 42 rkt M156 WP, AIM-9*2, ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "M151*98, Mk-82*2,AIM-9*2,ECM", - "name": "M151*98, Mk-82*2,AIM-9*2,ECM", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 5 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*20,AIM-9*2,ECM", - "name": "Mk-82*20,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 4 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*4,Mk-8AIR*4,AIM-9*2,ECM", - "name": "Mk-82*4,Mk-8AIR*4,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 7 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*6,AIM-9*2,TGP,ECM", - "name": "Mk-82*6,AIM-9*2,TGP,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*6,Mk-84*2,AIM-9*2,ECM", - "name": "Mk-82*6,Mk-84*2,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 8 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*8,AIM-9*2,ECM", - "name": "Mk-82*8,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 5 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82AIR*6,Mk-8AIR*4,M151*1,TGP,AIM-9*2,ECM", - "name": "Mk-82AIR*6,Mk-8AIR*4,M151*1,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 8 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82AIR*8,AIM-9*2,ECM", - "name": "Mk-82AIR*8,AIM-9*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M257, Para Illum", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "MK-84*2,LAU-68*2,AGM-65K*2", - "name": "MK-84*2,LAU-68*2,AGM-65K*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-84*4,AIM-9*2,ECM", - "name": "Mk-84*4,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 6 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-84*6,AIM-9*2,TGP,ECM", - "name": "Mk-84*6,AIM-9*2,TGP,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM- GBU-10*2,GBU-12*4,AIM-9*2,TGP,ECM", - "name": "PGM- GBU-10*2,GBU-12*4,AIM-9*2,TGP,ECM", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM- GBU-10*4, AGM-65K*2,AIM-9*2,TGP,ECM", - "name": "PGM- GBU-10*4, AGM-65K*2,AIM-9*2,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", - "quantity": 9 - } - ], - "enabled": true, - "code": "SUU-25*9,AIM-9*2,ECM", - "name": "SUU-25*9,AIM-9*2,ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP", - "name": "TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "TGP, CAP-9*1, BDU-50LGB*4", - "name": "TGP, CAP-9*1, BDU-50LGB*4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-117 with CATM-65K - Captive Trg Round for Mav K (CCD)", - "quantity": 1 - }, - { - "name": "LAU-117 with TGM-65G - Trg Round for Mav G (IIR)", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, CAP-9*1, CATM-65K*1, TGM-65G*1", - "name": "TGP, CAP-9*1, CATM-65K*1, TGM-65G*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 3 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, CBU-87*3, M151*28, AIM-9*2, ECM", - "name": "TGP, CBU-87*3, M151*28, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, M151*14, Mk-82*2, Mk-82AIR*2, AIM-9*2, ECM", - "name": "TGP, M151*14, Mk-82*2, Mk-82AIR*2, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, M151*42, Mk-82*6, Mk-82AIR*6, AIM-9*2, ECM", - "name": "TGP, M151*42, Mk-82*6, Mk-82AIR*6, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, M151*49, Mk-82*2, CBU-87*2, AIM-9*2, ECM", - "name": "TGP, M151*49, Mk-82*2, CBU-87*2, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, M151*84, Mk-82*2,AIM-9*2, ECM", - "name": "TGP, M151*84, Mk-82*2,AIM-9*2, ECM", - "roles": [ - "CAS" - ] - } - ], - "filename": "a-10.png", - "enabled": true, - "liveries": { - "81st fs spangdahlem ab, germany (sp) 1": { - "name": "81st FS Spangdahlem AB, Germany (SP) 1", - "countries": [ - "USA" - ] - }, - "fictional spanish tritonal": { - "name": "Fictional Spanish Tritonal", - "countries": [ - "SPN" - ] - }, - "47th fs barksdale afb, louisiana (bd)": { - "name": "47th FS Barksdale AFB, Louisiana (BD)", - "countries": [ - "USA" - ] - }, - "fictional georgian olive": { - "name": "Fictional Georgian Olive", - "countries": [ - "GRG" - ] - }, - "algerian af fictional grey": { - "name": "Algerian AF Fictional Grey", - "countries": [ - "DZA" - ] - }, - "fictional russian air force 1": { - "name": "Fictional Russian Air Force 1", - "countries": [ - "RUS" - ] - }, - "fictional israel 115 sqn flying dragon": { - "name": "Fictional Israel 115 Sqn Flying Dragon", - "countries": [ - "ISR" - ] - }, - "172nd fs battle creek angb, michigan (bc)": { - "name": "172nd FS Battle Creek ANGB, Michigan (BC)", - "countries": [ - "USA" - ] - }, - "190th fs boise angb, idaho (id)": { - "name": "190th FS Boise ANGB, Idaho (ID)", - "countries": [ - "USA" - ] - }, - "81st fs spangdahlem ab, germany (sp) 2": { - "name": "81st FS Spangdahlem AB, Germany (SP) 2", - "countries": [ - "USA" - ] - }, - "fictional german 3322": { - "name": "Fictional German 3322", - "countries": [ - "GER" - ] - }, - "66th ws nellis afb, nevada (wa)": { - "name": "66th WS Nellis AFB, Nevada (WA)", - "countries": [ - "USA" - ] - }, - "algerian af fictional desert": { - "name": "Algerian AF Fictional Desert", - "countries": [ - "DZA" - ] - }, - "fictional italian am (23gruppo)": { - "name": "AM (23Gruppo)", - "countries": [ - "ITA" - ] - }, - "haf fictional": { - "name": "Hellenic Airforce (Fictional)", - "countries": [ - "GRC" - ] - }, - "184th fs arkansas ang, fort smith (fs)": { - "name": "184th FS Arkansas ANG, Fort Smith (FS)", - "countries": [ - "USA" - ] - }, - "354th fs davis monthan afb, arizona (dm)": { - "name": "354th FS Davis Monthan AFB, Arizona (DM)", - "countries": [ - "USA" - ] - }, - "fictional royal norwegian air force": { - "name": "Fictional Royal Norwegian Air Force", - "countries": [ - "NOR" - ] - }, - "422nd tes nellis afb, nevada (ot)": { - "name": "422nd TES Nellis AFB, Nevada (OT)", - "countries": [ - "USA" - ] - }, - "118th fs bradley angb, connecticut (ct)": { - "name": "118th FS Bradley ANGB, Connecticut (CT)", - "countries": [ - "USA" - ] - }, - "fictional spanish aga": { - "name": "Fictional Spanish AGA", - "countries": [ - "SPN" - ] - }, - "74th fs moody afb, georgia (ft)": { - "name": "74th FS Moody AFB, Georgia (FT)", - "countries": [ - "USA" - ] - }, - "fictional russian air force 2": { - "name": "Fictional Russian Air Force 2", - "countries": [ - "RUS" - ] - }, - "118th fs bradley angb, connecticut (ct) n621": { - "name": "118th FS Bradley ANGB, Connecticut (CT) N621", - "countries": [ - "USA" - ] - }, - "357th fs davis monthan afb, arizona (dm)": { - "name": "357th FS Davis Monthan AFB, Arizona (DM)", - "countries": [ - "USA" - ] - }, - "canada rcaf 409 squadron": { - "name": "Fictional RCAF 409 Squadron", - "countries": [ - "CAN" - ] - }, - "355th fs eielson afb, alaska (ak)": { - "name": "355th FS Eielson AFB, Alaska (AK)", - "countries": [ - "USA" - ] - }, - "25th fs osan ab, korea (os)": { - "name": "25th FS Osan AB, Korea (OS)", - "countries": [ - "USA" - ] - }, - "358th fs davis monthan afb, arizona (dm)": { - "name": "358th FS Davis Monthan AFB, Arizona (DM)", - "countries": [ - "USA" - ] - }, - "australia notional raaf": { - "name": "Australia Notional RAAF", - "countries": [ - "AUS" - ] - }, - "fictional canadian air force pixel camo": { - "name": "Fictional Canadian Air Force Pixel Camo", - "countries": [ - "CAN" - ] - }, - "fictional france escadron de chasse 03.003 ardennes": { - "name": "Fictional France Escadron de Chasse 03.003 ARDENNES", - "countries": [ - "FRA" - ] - }, - "canada rcaf 442 snow scheme": { - "name": "Fictional RCAF 442 Snow Scheme", - "countries": [ - "CAN" - ] - }, - "23rd tfw england afb (el)": { - "name": "23rd TFW England AFB (EL)", - "countries": [ - "USA" - ] - }, - "fictional georgian grey": { - "name": "Fictional Georgian Grey", - "countries": [ - "GRG" - ] - }, - "fictional ukraine air force 1": { - "name": "Fictional Ukraine Air Force 1", - "countries": [ - "UKR" - ] - }, - "104th fs maryland ang, baltimore (md)": { - "name": "104th FS Maryland ANG, Baltimore (MD)", - "countries": [ - "USA" - ] - }, - "fictional spanish 12nd wing": { - "name": "Fictional Spanish 12nd Wing", - "countries": [ - "SPN" - ] - }, - "a-10 grey": { - "name": "A-10 Grey", - "countries": [ - "DEN", - "TUR", - "NETH", - "BEL", - "UK" - ] - }, - "fictional german 3323": { - "name": "Fictional German 3323", - "countries": [ - "GER" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, straight wing, 1 crew, attack aircraft. Warthog", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "A-20G": { - "name": "A-20G", - "coalition": "blue", - "label": "A-20G Havoc", - "era": "WW2", - "shortLabel": "A20", - "loadouts": [ - { - "items": [ - { - "name": "4 x AN-M64 - 500lb GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "500 lb GP bomb LD*4", - "name": "500 lb GP bomb LD*4", - "roles": [ - "CAS", - "Strike", - "Runway Attack", - "Antiship Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - } - ], - "filename": "a-20.png", - "enabled": true, - "liveries": { - "ussr 1st gmtap": { - "name": "1st GMTAP", - "countries": [ - "SUN", - "RUS" - ] - }, - "usaf 645th bs": { - "name": "645th BS, 410th BG, 9th AF", - "countries": [ - "USA" - ] - }, - "107 sqn": { - "name": "107 SQN", - "countries": [ - "UK" - ] - }, - "ussr 27 ape dd": { - "name": "27th API DD", - "countries": [ - "SUN", - "RUS" - ] - }, - "usaf 668th bs": { - "name": "668th BS, 416th BG", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 propeller, straight wing, 3 crew, medium attack bomber. Havoc", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "A-50": { - "name": "A-50", - "coalition": "red", - "label": "A-50 Mainstay", - "era": "Late Cold War", - "shortLabel": "A50", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "AWACS" - ] - } - ], - "filename": "a-50.png", - "enabled": true, - "liveries": { - "rf air force": { - "name": "RF Air Force", - "countries": [ - "RUS" - ] - }, - "rf air force new": { - "name": "RF Air Force new", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 15 crew. NATO reporting name: Mainstay", - "abilities": "AEW", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "AJS37": { - "name": "AJS37", - "coalition": "blue", - "label": "AJS37 Viggen", - "era": "Mid Cold War", - "shortLabel": "AJS", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", - "quantity": 4 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Battlefield Air Interdiction: RB-75*4, RB-24J*2, XT", - "name": "Battlefield Air Interdiction: RB-75*4, RB-24J*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-04E Anti-ship Missile", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Anti-ship: RB-04E*2, RB-74*2, XT", - "name": "Anti-ship: RB-04E*2, RB-74*2, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Anti-ship (Heavy Mav): RB-75T*4, XT", - "name": "Anti-ship (Heavy Mav): RB-75T*4, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "U/22 Jammer pod", - "quantity": 1 - }, - { - "name": "KB Flare/Chaff dispenser pod", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Hard Target (Countermeasures): RB-05, XT, KB, U22", - "name": "Hard Target (Countermeasures): RB-05, XT, KB, U22", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Hard Target (MAV): RB-75T*2, RB-74*2, XT", - "name": "Hard Target (MAV): RB-75T*2, RB-74*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Ferry Flight: XT", - "name": "Ferry Flight: XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", - "quantity": 2 - }, - { - "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS (75 GUN): RB-75*2, AKAN", - "name": "CAS (75 GUN): RB-75*2, AKAN", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAP: RB-74*4, XT", - "name": "CAP: RB-74*4, XT", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "U22/A Jammer", - "quantity": 1 - }, - { - "name": "KB Flare/Chaff dispenser pod", - "quantity": 1 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Countermeasures Escort: U/22A, KB", - "name": "Countermeasures Escort: U/22A, KB", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BK-90 MJ1 (72 x MJ1 HE-FRAG Bomblets)", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Strike: BK90 (MJ1)*2, RB-74*2, XT", - "name": "Strike: BK90 (MJ1)*2, RB-74*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS: AKAN, RB-05A", - "name": "CAS: AKAN, RB-05A", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAP (6 AAM): RB-74*4, RB-24J*2, XT", - "name": "CAP (6 AAM): RB-74*4, RB-24J*2, XT", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Rocket Half Load HE: ARAK HE*2, RB-74*2, XT", - "name": "Rocket Half Load HE: ARAK HE*2, RB-74*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAP / Intecept: RB-05A*2, RB-74*2, XT", - "name": "CAP / Intecept: RB-05A*2, RB-74*2, XT", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "4x SB M/71 120kg GP Bomb Low-drag", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bombs Low-drag: SB71LD*16, RB-24J*2, XT", - "name": "Bombs Low-drag: SB71LD*16, RB-24J*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", - "quantity": 2 - }, - { - "name": "KB Flare/Chaff dispenser pod", - "quantity": 1 - }, - { - "name": "U/22 Jammer pod", - "quantity": 1 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "SEAD: RB-75T*2, U22/A, KB, XT", - "name": "SEAD: RB-75T*2, U22/A, KB, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-15F Programmable Anti-ship Missile", - "quantity": 2 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Anti-Ship (Modern): RB-15F*2, RB-74*2, XT", - "name": "Anti-Ship (Modern): RB-15F*2, RB-74*2, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "New Payload", - "name": "New Payload", - "roles": [] - }, - { - "items": [ - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAP (AJ37): RB-24J*2", - "name": "CAP (AJ37): RB-24J*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "KB Flare/Chaff dispenser pod", - "quantity": 1 - }, - { - "name": "Rb-04E Anti-ship Missile", - "quantity": 1 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "ECM Escort Anti-ship: RB-04E, KB, RB-74*2, XT", - "name": "ECM Escort Anti-ship: RB-04E, KB, RB-74*2, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "4x SB M/71 120kg GP Bomb High-drag", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bombs High-drag: SB71HD*16, XT, RB-24J", - "name": "Bombs High-drag: SB71HD*16, XT, RB-24J", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Anti-ship (Light Mav): RB-75*4, XT", - "name": "Anti-ship (Light Mav): RB-75*4, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Rocket Full Load HE: ARAK HE*4, RB-24J, XT", - "name": "Rocket Full Load HE: ARAK HE*4, RB-24J, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "2x 80kg LYSB-71 Illumination Bomb", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Illumination: LYSB*8, XT", - "name": "Illumination: LYSB*8, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Anti-ship (RB05): RB-05A*2, RB-74*2, XT", - "name": "Anti-ship (RB05): RB-05A*2, RB-74*2, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAP (Gun): AKAN*2, RB-74*2, XT", - "name": "CAP (Gun): AKAN*2, RB-74*2, XT", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Hard Target: RB-05A*2, RB-74*2, XT", - "name": "Hard Target: RB-05A*2, RB-74*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "RB-05*2, XT", - "name": "RB-05*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAS: ARAK M70 HE*4, XT", - "name": "CAS: ARAK M70 HE*4, XT", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "4x SB M/71 120kg GP Bomb High-drag", - "quantity": 4 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Runway Strike: SB71HD*16, RB-24J, XT", - "name": "Runway Strike: SB71HD*16, RB-24J, XT", - "roles": [ - "Runway Attack" - ] - } - ], - "filename": "viggen.png", - "enabled": true, - "liveries": { - "37": { - "name": "#1 Splinter F21 Norrbottens Flygflottilj", - "countries": "All" - }, - "37402": { - "name": "#3 JA-37 F21 Akktu Stakki", - "countries": "All" - }, - "se-dxnv4": { - "name": "SE-DXN by Mach3DS", - "countries": "All" - }, - "f7 skaraborg": { - "name": "#4 Splinter F7 Skaraborgs Flygflottilj 76", - "countries": "All" - }, - "sf-37 akktu stakki - f21": { - "name": "SF-37 Akktu Stakki - F21", - "countries": "All" - }, - "the show must go on": { - "name": "SHOW MUST GO ON! by Bender & Mach3DS", - "countries": "All" - }, - "baremetal": { - "name": "#2 Bare Metal F7 Skaraborgs Flygflottilj", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "Single jet engine, delta wing, 1 crew, attack aircraft. Viggen", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "AV8BNA": { - "name": "AV8BNA", - "coalition": "blue", - "label": "AV8BNA Harrier", - "era": "Late Cold War", - "shortLabel": "AV8", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 6 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "H-L-H: Mk-82SEx6, GAU-12", - "name": "H-L-H: Mk-82SEx6, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 (7 WP Tkts)x2, TPOD", - "name": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 (7 WP Tkts)x2, TPOD", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AS: AGM-122, AIM-9M, GBU-12, GBU-16x2, TPOD, Jammer Pod, GAU-12", - "name": "AS: AGM-122, AIM-9M, GBU-12, GBU-16x2, TPOD, Jammer Pod, GAU-12", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "2 GBU-38 */*", - "quantity": 1 - }, - { - "name": "AERO 1D 300 Gallons Fuel Tank ", - "quantity": 2 - }, - { - "name": "2 GBU-38 *\\*", - "quantity": 1 - }, - { - "name": "AGM-122 Sidearm", - "quantity": 1 - } - ], - "enabled": true, - "code": "H-M-H: AIM-9M, AGM-122, GBU-38x4, Fuel Tankx2", - "name": "H-M-H: AIM-9M, AGM-122, GBU-38x4, Fuel Tankx2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "2 Mk-83 *\\*", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "2 Mk-83 */*", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx6, Jammer Pod, GAU-12", - "name": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx6, Jammer Pod, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AERO 1D 300 Gallons Fuel Tank ", - "quantity": 2 - }, - { - "name": "2 Mk-83 *\\*", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "2 Mk-83 */*", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx4, Jammer Pod, GAU-12, Fuel Tankx2", - "name": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx4, Jammer Pod, GAU-12, Fuel Tankx2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AFAC: AIM-9m, AGM-122, SUU-25x2, LAU-68 (7 WP Tkts)x2, Jammer Pod", - "name": "AFAC: AIM-9m, AGM-122, SUU-25x2, LAU-68 (7 WP Tkts)x2, Jammer Pod", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "2 Mk-82 Snakeye */*", - "quantity": 2 - }, - { - "name": "2 Mk-82 Snakeye *\\*", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Interdiction (H-L-L-H): AIM-9Mx2, Mk-82SEx8, Jammer Pod, GAU-12", - "name": "Interdiction (H-L-L-H): AIM-9Mx2, Mk-82SEx8, Jammer Pod, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "H-M-H: Mk-82LDx6, GAU-12", - "name": "H-M-H: Mk-82LDx6, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "2 GBU-12 *-*", - "quantity": 2 - }, - { - "name": "AERO 1D 300 Gallons Fuel Tank ", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM (H-H-H-H): GBU-12x4, TPOD, Fuel Tankx2", - "name": "PGM (H-H-H-H): GBU-12x4, TPOD, Fuel Tankx2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "2 Mk-82 Snakeye *\\*", - "quantity": 2 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "2 Mk-82 Snakeye */*", - "quantity": 2 - } - ], - "enabled": true, - "code": "L-L-L: Mk-82SEx10, Jammer Pod, GAU-12", - "name": "L-L-L: Mk-82SEx10, Jammer Pod, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 2 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 LAU-68 (7 WP Tkts)x2, GAU-12", - "name": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 LAU-68 (7 WP Tkts)x2, GAU-12", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "3 Mk-82", - "quantity": 2 - }, - { - "name": "2 Mk-82 *\\*", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "2 Mk-82 */*", - "quantity": 1 - } - ], - "enabled": true, - "code": "H-M-H: Mk-82LDx10, GAU-12", - "name": "H-M-H: Mk-82LDx10, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets", - "quantity": 2 - }, - { - "name": "2 Mk-20 Rockeye *\\*", - "quantity": 2 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "2 Mk-20 Rockeye */*", - "quantity": 2 - } - ], - "enabled": true, - "code": "Area Suppression: Mk-20x10, GAU-12", - "name": "Area Suppression: Mk-20x10, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 2 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Rockets: LAU-10 (4 HE Rkts)x2, LAU-68 (7 HE Rkts)x2", - "name": "Rockets: LAU-10 (4 HE Rkts)x2, LAU-68 (7 HE Rkts)x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AS: AIM-9M, AGM-122, AGM-65Fx2, GBU-12, TPOD, Jammer Pod, GAU-12", - "name": "AS: AIM-9M, AGM-122, AGM-65Fx2, GBU-12, TPOD, Jammer Pod, GAU-12", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-7 with AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12", - "name": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "2 GBU-12 *-*", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM (H-H-H-H): GBU-12x5, TPOD, Jammer POd, GAU-12", - "name": "PGM (H-H-H-H): GBU-12x5, TPOD, Jammer POd, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-7 with AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AERO 1D 300 Gallons Fuel Tank ", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12, Fuel Tankx2", - "name": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12, Fuel Tankx2", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM (H-H-H-H): AIM-9Mx2, GBU-16x4, TPOD, GAU-12", - "name": "PGM (H-H-H-H): AIM-9Mx2, GBU-16x4, TPOD, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 4 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Anti Armor: AIM-9Mx2, AGM-65Fx4, GAU-12", - "name": "Anti Armor: AIM-9Mx2, AGM-65Fx4, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "2 Mk-83 *\\*", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "2 Mk-83 */*", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "RA (H-M-M-H): AIM-9M, AGM-122, Mk-83LDx6, Jammer Pod, GAU-12", - "name": "RA (H-M-M-H): AIM-9M, AGM-122, Mk-83LDx6, Jammer Pod, GAU-12", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 4 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Stand Off: AIM-9M, AGM-122, AGM-65Fx4, Jammer Pod, GAU-12", - "name": "Stand Off: AIM-9M, AGM-122, AGM-65Fx4, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 3 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Stand Off: AIM-9M, AGM-122x3, AGM-65Fx2, Jammer Pod, GAU-12", - "name": "Stand Off: AIM-9M, AGM-122x3, AGM-65Fx2, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-122 Sidearm", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Stand Off: AIM-9Mx2, AGM-122x2, AGM-65Fx2, Jammer Pod, GAU-12", - "name": "Stand Off: AIM-9Mx2, AGM-122x2, AGM-65Fx2, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 3 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Iron Hand: AIM-9Mx1, AGM-122x3, LAU-68 (7 HE Rkts)x2, Jammer Pod, GAU-12", - "name": "Iron Hand: AIM-9Mx1, AGM-122x3, LAU-68 (7 HE Rkts)x2, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 3 - }, - { - "name": "2 Mk-20 Rockeye *\\*", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "2 Mk-20 Rockeye */*", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Iron Hand: AIM-9M, AGM-122x3, Mk-20x4, Jammer Pod, GAU-12", - "name": "Iron Hand: AIM-9M, AGM-122x3, Mk-20x4, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AS: AIM-9M, AGM-122, AGM-65E2x2, GBU-12, TPOD, Jammer Pod, GAU-12", - "name": "AS: AIM-9M, AGM-122, AGM-65E2x2, GBU-12, TPOD, Jammer Pod, GAU-12", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM: AIM-9M, AGM-122, AGM-65E2x4, TPOD", - "name": "PGM: AIM-9M, AGM-122, AGM-65E2x4, TPOD", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM: AIM-9M, AGM-122, APKWSIIx4, TPOD", - "name": "PGM: AIM-9M, AGM-122, APKWSIIx4, TPOD", - "roles": [ - "Strike" - ] - } - ], - "filename": "av8bna.png", - "enabled": true, - "liveries": { - "vmat-203": { - "name": "VMAT-203", - "countries": "All" - }, - "vma-542": { - "name": "VMA-542", - "countries": "All" - }, - "vma-311d": { - "name": "VMA-311D", - "countries": "All" - }, - "vma-223d": { - "name": "VMA-223D", - "countries": "All" - }, - "vma-513": { - "name": "VMA-513", - "countries": "All" - }, - "vma-214d": { - "name": "VMA-214D", - "countries": "All" - }, - "vma-211": { - "name": "VMA-211", - "countries": "All" - }, - "vma-231-2": { - "name": "VMA-231-2", - "countries": "All" - }, - "vmat-203s": { - "name": "VMAT-203 Special", - "countries": "All" - }, - "vma-214": { - "name": "VMA-214", - "countries": "All" - }, - "vma-513d": { - "name": "VMA-513D", - "countries": "All" - }, - "vma-231d": { - "name": "VMA-231D", - "countries": "All" - }, - "vma-311": { - "name": "VMA-311", - "countries": "All" - }, - "default": { - "name": "default", - "countries": "All" - }, - "vma-231-1": { - "name": "VMA-231-1", - "countries": "All" - }, - "vma-211d": { - "name": "VMA-211D", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew, all weather, VTOL attack aircraft. Harrier", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "An-26B": { - "name": "An-26B", - "coalition": "red", - "label": "An-26B Curl", - "era": "Mid Cold War", - "shortLabel": "A26", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "an-26.png", - "enabled": true, - "liveries": { - "china plaaf": { - "name": "China PLAAF", - "countries": [ - "CHN" - ] - }, - "rf navy": { - "name": "RF Navy", - "countries": [ - "RUS" - ] - }, - "abkhazian af": { - "name": "Abkhazian AF", - "countries": [ - "ABH" - ] - }, - "aeroflot": { - "name": "Aeroflot", - "countries": [ - "SUN", - "RUS" - ] - }, - "georgian af": { - "name": "Georgian AF", - "countries": [ - "GRG" - ] - }, - "rf air force": { - "name": "RF Air Force", - "countries": [ - "RUS" - ] - }, - "ukraine af": { - "name": "Ukraine AF", - "countries": [ - "UKR" - ] - } - }, - "type": "Aircraft", - "description": "2 turboprop, straight wing, 5 crew, cargo and passenger aircraft. NATO reporting name: Curl", - "abilities": "Transport", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "An-30M": { - "name": "An-30M", - "coalition": "red", - "label": "An-30M Clank", - "era": "Mid Cold War", - "shortLabel": "A30", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "a-50.png", - "enabled": true, - "liveries": { - "15th transport ab": { - "name": "15th Transport AB", - "countries": [ - "UKR" - ] - }, - "china caac": { - "name": "China CAAC", - "countries": [ - "CHN" - ] - }, - "rf air force": { - "name": "RF Air Force", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 turboprop, straight wing, 7 crew, weather reseach aircraft. NATO reporting name: Clank", - "abilities": "Transport", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "B-1B": { - "name": "B-1B", - "coalition": "blue", - "label": "B-1B Lancer", - "era": "Late Cold War", - "shortLabel": "B1", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "28 x Mk-82 - 500lb GP Bombs LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "Mk-82*84", - "name": "Mk-82*84", - "roles": [ - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "4 x AGM-154C - JSOW Unitary BROACH", - "quantity": 3 - } - ], - "enabled": true, - "code": "AGM-154*12", - "name": "AGM-154*12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "GBU-38*48", - "name": "GBU-38*48", - "roles": [ - "CAS", - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "10 x CBU-87 - 202 x CEM Cluster Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "CBU-87*30", - "name": "CBU-87*30", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "10 x CBU-97 - 10 x SFW Cluster Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "CBU-97*30", - "name": "CBU-97*30", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "10 x CBU-97 - 10 x SFW Cluster Bombs", - "quantity": 2 - }, - { - "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-38*16, CBU-97*20", - "name": "GBU-38*16, CBU-97*20", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "8 x Mk-84 - 2000lb GP Bombs LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "Mk-84*24", - "name": "Mk-84*24", - "roles": [ - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "8 x GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "GBU-31*24", - "name": "GBU-31*24", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "8 x GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "GBU-31(V)3/B*24", - "name": "GBU-31(V)3/B*24", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", - "quantity": 2 - }, - { - "name": "8 x GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bombs", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-31*8, GBU-38*32", - "name": "GBU-31*8, GBU-38*32", - "roles": [ - "Strike", - "Strike" - ] - } - ], - "filename": "b-1.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swing wing, 2 crew bomber. Lancer", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "B-52H": { - "name": "B-52H", - "coalition": "blue", - "label": "B-52H Stratofortress", - "era": "Early Cold War", - "shortLabel": "B52", - "loadouts": [ - { - "items": [ - { - "name": "8 x AGM-84A Harpoon ASM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-84A*8", - "name": "AGM-84A*8", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "6 x AGM-86D on MER", - "quantity": 2 - }, - { - "name": "8 x AGM-86D", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-86C*20", - "name": "AGM-86C*20", - "roles": [ - "Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "MER12 with 12 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "27 x Mk-82 - 500lb GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk 82*51", - "name": "Mk 82*51", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "18 x Mk-84 2000lb GP Bombs", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-84*18", - "name": "Mk-84*18", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "HSAB with 9 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk20*18", - "name": "Mk20*18", - "roles": [ - "Strike", - "Runway Attack" - ] - } - ], - "filename": "b-52.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "8 jet engine, swept wing, 6 crew bomber. Stratofortress", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Bf-109K-4": { - "name": "Bf-109K-4", - "coalition": "red", - "label": "Bf-109K-4", - "era": "WW2", - "shortLabel": "109", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "300 liter Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank", - "name": "Fuel Tank", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "SC 250 Type 3 J - 250kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC250", - "name": "SC250", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 500 J - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC500", - "name": "SC500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - } - ], - "filename": "bf109.png", - "enabled": true, - "liveries": { - "germany_standard": { - "name": "Jagdgeschwader 27", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 white 6, jg 4": { - "name": "White 6, JG 4", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 red7 eads": { - "name": "BF109G4 -red7- EADS -fondation messerschmitt V2", - "countries": [ - "GER" - ] - }, - "bf-109 k4 iijg52": { - "name": "II./JG52", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 us captured": { - "name": "US Captured", - "countries": [ - "USA" - ] - }, - "bf-109 k4 stab jg52": { - "name": "Stab JG52", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 334xxx batch": { - "name": "334xxx batch", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 ussr green": { - "name": "Green-trophy RKKA", - "countries": [ - "SUN", - "RUS" - ] - }, - "bf-109 k4 330xxx batch": { - "name": "330xxx batch", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 irmgard": { - "name": "Bf-109K-4 Irmgard Captured", - "countries": [ - "USA" - ] - }, - "bf-109 k4 swiss e-3a j-374 1940": { - "name": "Swiss E-3a J-374 1940 l'Seducteur", - "countries": [ - "SUI" - ] - }, - "green": { - "name": "Green", - "countries": "All" - }, - "bf-109 k4 9.jg77": { - "name": "9./JG77", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 croatia": { - "name": "Croatia Air Force - 'Black 4'", - "countries": [ - "HRV", - "NZG", - "GER" - ] - }, - "bf-109 k4 9.jg27 (w10+i)": { - "name": "9./JG27 (W10+I)", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 legion condor spain 1939": { - "name": "6-123 ESPAÑA", - "countries": [ - "SPN" - ] - }, - "bf-109 k4 jagdgeschwader 53": { - "name": " Jagdgeschwader 53", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 1.njg 11": { - "name": "NJG 11", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 g10 of tibor tobak rhaf": { - "name": "BF109G10 RHAF Tibor Tobak by Reflected", - "countries": [ - "GER", - "HUN", - "NZG" - ] - }, - "bf-109 k4 jagdgeschwader 77": { - "name": "Jagdgeschwader 77", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 iaf s-199": { - "name": "S-199 IDF by Ovenmit", - "countries": [ - "ISR" - ] - }, - "bf-109 k4 iiijg27": { - "name": "III/JG27", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 1.njg 11 (white 5)": { - "name": "1./NJG 11 (W5)", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 raf vd 358 e-2": { - "name": "RAF VD 358 E-2 - UK Captured", - "countries": [ - "UK" - ] - }, - "bf-109 k4 335xxx batch": { - "name": "335xxx batch", - "countries": [ - "GER", - "NZG" - ] - } - }, - "type": "Aircraft", - "description": "Single propeller, straight wing, 1 crew. 109", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "C-101CC": { - "name": "C-101CC", - "coalition": "blue", - "label": "C-101CC", - "era": "Late Cold War", - "shortLabel": "101", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, DEFA 553 CANNON (I)", - "name": "2*AIM-9P, DEFA 553 CANNON (I)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, DEFA 553 CANNON (I)", - "name": "2*AIM-9M, DEFA 553 CANNON (I)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, DEFA 533 CANNON (II)", - "name": "2*AIM-9P, DEFA 533 CANNON (II)", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, AN-M3 CANNON (IV)", - "name": "2*AIM-9P, AN-M3 CANNON (IV)", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON", - "name": "2*R.550 MAGIC, DEFA 553 CANNON", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, AN-M3 CANNON (III)", - "name": "2*AIM-9M, AN-M3 CANNON (III)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, DEFA 553 CANNON", - "name": "2*AIM-9P, DEFA 553 CANNON", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON (III)", - "name": "2*R.550 MAGIC, DEFA 553 CANNON (III)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", - "name": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", - "name": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M 2*SEA EAGLE, AN-M3 CANNON", - "name": "2*AIM-9M 2*SEA EAGLE, AN-M3 CANNON", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, AN-M3 CANNON", - "name": "2*AIM-9M, AN-M3 CANNON", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", - "name": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2* SEA EAGLE, DEFA-553 CANNON", - "name": "2* SEA EAGLE, DEFA-553 CANNON", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "BR-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9P, 2*BR-250,2*MK-82, DEFA 553 CANNON", - "name": "2*AIM-9P, 2*BR-250,2*MK-82, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", - "name": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", - "name": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "BR-500 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*BELOUGA, 2*BR-500, DEFA 553 CANNON", - "name": "2*BELOUGA, 2*BR-500, DEFA 553 CANNON", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, DEFA 553 CANNON (IV)", - "name": "2*AIM-9M, DEFA 553 CANNON (IV)", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, AN-M3 CANNON (II)", - "name": "2*R.550 MAGIC, AN-M3 CANNON (II)", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic, DEFA 553 CANNON (I)", - "name": "2*R550 Magic, DEFA 553 CANNON (I)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - }, - { - "name": "BIN-200 - 200kg Napalm Incendiary Bomb", - "quantity": 2 - }, - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", - "name": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", - "name": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, AN-M3 CANNON (III)", - "name": "2*AIM-9P, AN-M3 CANNON (III)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, DEFA 533 CANNON (II)", - "name": "2*AIM-9M, DEFA 533 CANNON (II)", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", - "quantity": 2 - }, - { - "name": "BR-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", - "name": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - } - ], - "filename": "c-101.png", - "enabled": true, - "liveries": { - "i brigada aerea - chile early green n.1 a-36 halcon": { - "name": "I Brigada Aerea - Chile Early Green", - "countries": [ - "CHL" - ] - }, - "aviodev skin": { - "name": "Aviodev Skin", - "countries": [ - "CUB", - "AUS", - "PRT", - "SUN", - "USA", - "BLR", - "HRV", - "LBN", - "SVK", - "TUR", - "ARG", - "BEL", - "FIN", - "SAU", - "UN", - "RSI", - "CHL", - "AUT", - "EGY", - "CAN", - "QAT", - "YUG", - "ISR", - "PER", - "BHR", - "NGA", - "IDN", - "KAZ", - "INS", - "AUSAF", - "PAK", - "SVN", - "RED", - "ROU", - "DEN", - "TUN", - "IND", - "CZE", - "MYS", - "GHA", - "OMN", - "CYP", - "RSO", - "IRN", - "UKR", - "JPN", - "THA", - "JOR", - "RSA", - "MEX", - "NOR", - "ITA", - "NETH", - "SUI", - "VNM", - "KOR", - "GRG", - "SDN", - "UK", - "BRA", - "ARE", - "ABH", - "BOL", - "RUS", - "PHL", - "SPN", - "MAR", - "DZA", - "GDR", - "HND", - "PRK", - "SRB", - "BGR", - "LBY", - "VEN", - "IRQ", - "SYR", - "NZG", - "GRC", - "POL", - "SWE", - "GER", - "CHN", - "YEM", - "FRA", - "HUN", - "ETH", - "BLUE", - "KWT" - ] - }, - "georgia combat fictional green": { - "name": "Georgia Combat Fictional Green", - "countries": [ - "GRG" - ] - }, - "i brigada aerea - chile early grey n.1 a-36 halcon": { - "name": "I Brigada Aerea - Chile Early Grey", - "countries": [ - "CHL" - ] - }, - "royal jordanian air force": { - "name": "Royal jordanian Air Force ", - "countries": [ - "JOR" - ] - }, - "georgia combat fictional spots": { - "name": "Georgia Combat Fictional Spots", - "countries": [ - "GRG" - ] - }, - "i brigada aerea - grupo de aviacion n.1 a-36 halcon desert skin": { - "name": "I Brigada Aerea - Grupo de Aviacion N.1 A-36 HALCON Desert Skin", - "countries": [ - "CHL" - ] - }, - "i brigada aerea - chile early agressor nº410 n.1 a-36 halcon": { - "name": "I Brigada Aerea - Chile Early Agressor Nº410 ", - "countries": [ - "CHL" - ] - }, - "usaf agressor fictional": { - "name": "USAF Agressor Fictional", - "countries": [ - "USA", - "AUSAF", - "BLUE" - ] - }, - "i brigada aerea - grupo de aviacion n.1 a-36 halcon": { - "name": "I Brigada Aerea - Grupo de Aviacion N.1 A-36 HALCON", - "countries": [ - "CHL" - ] - }, - "i brigada aerea - chile early agressor nº411 n.1 a-36 halcon": { - "name": "I Brigada Aerea - Chile Early Agressor Nº411", - "countries": [ - "CHL" - ] - }, - "claex green camu skin - centro logistico de armamento y experimentacion": { - "name": "CLAEX Green Camu Skin - Centro Logistico de Armamento y Experimentacion", - "countries": [ - "RED", - "SPN", - "BLUE" - ] - }, - "russia combat fictional": { - "name": "Russia Combat Fictional", - "countries": [ - "RED", - "RUS" - ] - }, - "georgia combat fictional wolf": { - "name": "Georgia Combat Fictional Wolf", - "countries": [ - "GRG" - ] - }, - "honduras - air force comayagua coronel jose enrique soto cano air base skin 1": { - "name": "Honduras - Air Force Comayagua Coronel Jose Enrique Soto Cano Air Base Skin 1", - "countries": [ - "HND" - ] - }, - "i brigada aerea - grupo de aviacion n.3 a-36 halcon": { - "name": "I Brigada Aerea - Grupo de Aviacion N.3 A-36 HALCON", - "countries": [ - "CHL" - ] - }, - "honduras - air force comayagua coronel jose enrique soto cano air base skin 2": { - "name": "Honduras - Air Force Comayagua Coronel Jose Enrique Soto Cano Air Base Skin 2", - "countries": [ - "HND" - ] - }, - "claex desert camu skin - centro logistico de armamento y experimentacion": { - "name": "CLAEX Desert Camu Skin - Centro Logistico de Armamento y Experimentacion", - "countries": [ - "RED", - "SPN", - "BLUE" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "C-130": { - "name": "C-130", - "coalition": "blue", - "label": "C-130 Hercules", - "era": "Early Cold War", - "shortLabel": "130", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "c-130.png", - "enabled": true, - "liveries": { - "belgian air force": { - "name": "Belgian Air Force", - "countries": [ - "BEL" - ] - }, - "iriaf 5-8518": { - "name": "IRIAF 5-8518", - "countries": [ - "IRN" - ] - }, - "israel defence force": { - "name": "Israel Defence Force", - "countries": [ - "ISR" - ] - }, - "haf gray": { - "name": "Hellenic Airforce - Gray", - "countries": [ - "GRC" - ] - }, - "turkish air force": { - "name": "Turkish Air Force", - "countries": [ - "TUR" - ] - }, - "royal danish air force": { - "name": "Royal Danish Air Force", - "countries": [ - "DEN" - ] - }, - "algerian af green": { - "name": "Algerian AF Green", - "countries": [ - "DZA" - ] - }, - "royal netherlands air force": { - "name": "Royal Netherlands Air Force", - "countries": [ - "NETH" - ] - }, - "canada's air force": { - "name": "Canada's Air Force", - "countries": [ - "CAN" - ] - }, - "royal norwegian air force": { - "name": "Royal Norwegian Air Force", - "countries": [ - "NOR" - ] - }, - "iriaf 5-8503": { - "name": "IRIAF 5-8503", - "countries": [ - "IRN" - ] - }, - "us air force": { - "name": "US Air Force", - "countries": [ - "USA" - ] - }, - "royal air force": { - "name": "Royal Air Force", - "countries": [ - "UK" - ] - }, - "air algerie l-382 white": { - "name": "Air Algerie L-382 White", - "countries": [ - "DZA" - ] - }, - "french air force": { - "name": "French Air Force", - "countries": [ - "FRA" - ] - }, - "spanish air force": { - "name": "Spanish Air Force", - "countries": [ - "SPN" - ] - }, - "algerian af h30 white": { - "name": "Algerian AF H30 White", - "countries": [ - "DZA" - ] - } - }, - "type": "Aircraft", - "description": "4 turboprop, stright wing, 3 crew. Hercules", - "abilities": "Transport", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "C-17A": { - "name": "C-17A", - "coalition": "blue", - "label": "C-17A Globemaster", - "era": "Modern", - "shortLabel": "C17", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "c-17.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 3 crew. Globemaster", - "abilities": "Transport", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "E-2C": { - "name": "E-2C", - "coalition": "blue", - "label": "E-2D Hawkeye", - "era": "Mid Cold War", - "shortLabel": "E2", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "AWACS" - ] - } - ], - "filename": "e-2.png", - "enabled": true, - "liveries": { - "vaw-125 tigertails": { - "name": "VAW-125 Tigertails", - "countries": [ - "USA" - ] - }, - "e-2d demo": { - "name": "E-2D Demo", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 turboprop, straight wing, 5 crew. Hawkeye", - "abilities": "AEW, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "E-3A": { - "name": "E-3A", - "coalition": "blue", - "label": "E-3A Sentry", - "era": "Mid Cold War", - "shortLabel": "E3", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "AWACS" - ] - } - ], - "filename": "e-3.png", - "enabled": true, - "liveries": { - "nato": { - "name": "nato", - "countries": [ - "USA", - "FRA", - "UK" - ] - }, - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 17 crew. Sentry", - "abilities": "AEW", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "F-117A": { - "name": "F-117A", - "coalition": "blue", - "label": "F-117A Nighthawk", - "era": "Late Cold War", - "shortLabel": "117", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-12*2", - "name": "GBU-12*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2", - "name": "GBU-10*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-27 - 2000lb Laser Guided Penetrator Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-27*2", - "name": "GBU-27*2", - "roles": [ - "Strike" - ] - } - ], - "filename": "f-117.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, delta wing, 1 crew. Nighthawk", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-14A-135-GR": { - "name": "F-14A-135-GR", - "coalition": "blue", - "label": "F-14A-135-GR Tomcat", - "era": "Late Cold War", - "shortLabel": "14A", - "loadouts": [ - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", - "name": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-7F*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-7F*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-9L*4, XT*2", - "name": "AIM-54A-MK47*4, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK47*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 1 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7F", - "quantity": 4 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7F*4, AIM-9L*4, XT*2", - "name": "AIM-7F*4, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7F", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7F*6, AIM-9L*2, XT*2", - "name": "AIM-7F*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", - "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "GBU-24", - "quantity": 1 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", - "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "3 BDU-33", - "quantity": 4 - } - ], - "enabled": true, - "code": "BDU-33*12", - "name": "BDU-33*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "MAK79 4 BDU-33", - "quantity": 2 - }, - { - "name": "MAK79 3 BDU-33", - "quantity": 2 - } - ], - "enabled": true, - "code": "BDU-33*14", - "name": "BDU-33*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "GBU-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2", - "name": "GBU-10*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "GBU-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4", - "name": "GBU-12*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-16", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-16*4", - "name": "GBU-16*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-24", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-24*2", - "name": "GBU-24*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "2 SUU-25 * 8 LUU-2", - "quantity": 1 - }, - { - "name": "SUU-25 * 8 LUU-2", - "quantity": 1 - } - ], - "enabled": true, - "code": "LUU-2*24", - "name": "LUU-2*24", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-20*4", - "name": "Mk-20*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-81", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-81", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-81*14", - "name": "Mk-81*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-82", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-82", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*14", - "name": "Mk-82*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-82", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82*4", - "name": "Mk-82*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82AIR", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82AIR*4", - "name": "Mk-82AIR*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-83", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-83*4", - "name": "Mk-83*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-84", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-84*4", - "name": "Mk-84*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "XT*2", - "name": "XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*12", - "name": "Zuni*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 3 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*28", - "name": "Zuni*28", - "roles": [ - "Strike", - "CAS" - ] - } - ], - "filename": "f-14.png", - "enabled": true, - "liveries": { - "rogue nation(top gun - maverick)": { - "name": "Top Gun: Maverick - Rogue Nation", - "countries": "All" - }, - "vf-21 freelancers 200": { - "name": "VF-21 Freelancers 200", - "countries": "All" - }, - "vf-11 ae106 1988": { - "name": "VF-11 AE106 1988", - "countries": "All" - }, - "vf-301 nd113": { - "name": "VF-301 ND113 by Mach3DS", - "countries": "All" - }, - "vf-301 nd111": { - "name": "VF-301 ND111 by Mach3DS", - "countries": "All" - }, - "vf-154 black knights 101": { - "name": "00 - VF-154 Black Knights 101", - "countries": "All" - }, - "vf-14 tophatters aj206 (1999 allied force)": { - "name": "VF-14 Tophatters AJ206 (1999 Allied Force)", - "countries": "All" - }, - "vf-31 ae204 1988": { - "name": "VF-31 AE204 1988", - "countries": "All" - }, - "vf-1 wolfpack nk102 (1974)": { - "name": "VF-1 Wolfpack NK102 (1974)", - "countries": "All" - }, - "vf-33 starfighters ab201 (1988)": { - "name": "VF-33 Starfighters AB201(Dale Snodgrass)", - "countries": "All" - }, - "vf-31 1991 ae200": { - "name": "VF-31 1991 AE200 by Mach3DS", - "countries": "All" - }, - "vf-41 black aces aj100 (1999 allied force)": { - "name": "VF-41 Black Aces AJ100 (1999 Allied Force)", - "countries": "All" - }, - "vf-41 black aces aj101 (1999 allied force)": { - "name": "VF-41 Black Aces AJ101 (1999 Allied Force)", - "countries": "All" - }, - "vf-31 1991 ae205": { - "name": "VF-31 1991 AE205 by Mach3DS", - "countries": "All" - }, - "vf-41 black aces aj102 (1999 allied force)": { - "name": "VF-41 Black Aces AJ102 (1999 Allied Force)", - "countries": "All" - }, - "vf-1 wolfpack nk101 (1974)": { - "name": "VF-1 Wolfpack NK101 (1974)", - "countries": "All" - }, - "vf-31 ae200 1988": { - "name": "VF-31 AE200 1988", - "countries": "All" - }, - "vf-11 red rippers 106": { - "name": "VF-11 Red Rippers 106", - "countries": "All" - }, - "vf-1 wolfpack nk103 (1974)": { - "name": "VF-1 Wolfpack NK103 (1974)", - "countries": "All" - }, - "vf-14 tophatters ab103 (1976)": { - "name": "VF-14 Tophatters AB103(1976)", - "countries": "All" - }, - "vf-111 sundowners 200": { - "name": "VF-111 Sundowners 200", - "countries": "All" - }, - "top gun 114": { - "name": "Top Gun 114 Maverick and Goose", - "countries": "All" - }, - "vf-11 ae103 1988": { - "name": "VF-11 AE103 1988", - "countries": "All" - }, - "vx-4 vandy one sad bunny (1992)": { - "name": "VX-4 Vandy One Sad Bunny (1992)", - "countries": "All" - }, - "vf-211 fighting checkmates 100 (2001)": { - "name": "VF-211 Fighting Checkmates 100 (2001)", - "countries": [ - "USA" - ] - }, - "vf-301 nd104": { - "name": "VF-301 ND104 by Mach3DS", - "countries": "All" - }, - "vf-32 swordsmen ab200 (1976)": { - "name": "VF-32 Swordsmen AB200 (1976)", - "countries": "All" - }, - "vf-211 fighting checkmates 105": { - "name": "VF-211 Fighting Checkmates 105", - "countries": "All" - }, - "vf-14 tophatters ab100 (1976)": { - "name": "VF-14 Tophatters AB100(1976)", - "countries": "All" - }, - "vf-11 ae101 1988": { - "name": "VF-11 AE101 1988", - "countries": "All" - }, - "vf-14 tophatters aj202 (1999 allied force)": { - "name": "VF-14 Tophatters AJ202 (1999 Allied Force)", - "countries": "All" - }, - "vf-1 wolfpack nk100 (1974)": { - "name": "VF-1 Wolfpack NK100 (1974)", - "countries": "All" - }, - "vf-301 nd101 hivis": { - "name": "VF-301 ND101 HiVis by Mach3DS", - "countries": "All" - }, - "vf-14 tophatters aj201 (1999 allied force)": { - "name": "VF-14 Tophatters AJ201 (1999 Allied Force)", - "countries": "All" - }, - "vf-14 tophatters aj200 (1999) 80th aniversary": { - "name": "VF-14 Tophatters AJ200 (1999) 80th Anniversary", - "countries": "All" - }, - "vf-41 black aces aj104 (1999 allied force)": { - "name": "VF-41 Black Aces AJ104 (1999 Allied Force)", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swing wing, 2 crew. Tomcat", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-14B": { - "name": "F-14B", - "coalition": "blue", - "label": "F-14B Tomcat", - "era": "Late Cold War", - "shortLabel": "14B", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "XT*2", - "name": "XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*6, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*6, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*6, AIM-9M*2, XT*2", - "name": "AIM-7M*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*6, AIM-9L*2, XT*2", - "name": "AIM-7M*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "name": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", - "name": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "name": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-9M*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-9M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK47*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*4, AIM-9M*4, XT*2", - "name": "AIM-54C-MK47*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", - "name": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 4 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*4, AIM-9L*4, XT*2", - "name": "AIM-7M*4, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 3 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 3 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 3 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "MAK79 4 BDU-33", - "quantity": 2 - }, - { - "name": "MAK79 3 BDU-33", - "quantity": 2 - } - ], - "enabled": true, - "code": "BDU-33*14", - "name": "BDU-33*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "3 BDU-33", - "quantity": 4 - } - ], - "enabled": true, - "code": "BDU-33*12", - "name": "BDU-33*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "GBU-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2", - "name": "GBU-10*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "GBU-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4", - "name": "GBU-12*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-16", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-16*4", - "name": "GBU-16*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-24", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-24*2", - "name": "GBU-24*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-84", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-84*4", - "name": "Mk-84*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-83", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-83*4", - "name": "Mk-83*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-82", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82*4", - "name": "Mk-82*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-82", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-82", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*14", - "name": "Mk-82*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-81", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-81", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-81*14", - "name": "Mk-81*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-20*4", - "name": "Mk-20*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82AIR", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82AIR*4", - "name": "Mk-82AIR*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*12", - "name": "Zuni*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 3 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*28", - "name": "Zuni*28", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 SUU-25 * 8 LUU-2", - "quantity": 1 - }, - { - "name": "SUU-25 * 8 LUU-2", - "quantity": 1 - } - ], - "enabled": true, - "code": "LUU-2*24", - "name": "LUU-2*24", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 1 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*1", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*1", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", - "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "GBU-24", - "quantity": 1 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", - "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - } - ], - "filename": "f-14.png", - "enabled": true, - "liveries": { - "vf-103 sluggers 206 (1995)": { - "name": "VF-103 Sluggers 206 (1995)", - "countries": "All" - }, - "vf-143 pukin dogs low vis": { - "name": "VF-143 Pukin Dogs Low Vis (1998)", - "countries": "All" - }, - "rogue nation(top gun - maverick)": { - "name": "Top Gun: Maverick - Rogue Nation", - "countries": "All" - }, - "vf-31 tomcatters nk101 (2004)": { - "name": "VF-31 Tomcatters NK101 (2004)", - "countries": "All" - }, - "vf-32 fighting swordsmen 103": { - "name": "VF-32 Fighting Swordsmen 103 (1998)", - "countries": "All" - }, - "vf-103 jolly rogers hi viz": { - "name": "VF-103 Jolly Rogers Hi Viz", - "countries": "All" - }, - "vf-101 dark": { - "name": "VF-101 Dark", - "countries": "All" - }, - "vf-102 diamondbacks": { - "name": "01 - VF-102 Diamondbacks 1996", - "countries": "All" - }, - "vf-143 pukin dogs low vis (1995)": { - "name": "VF-143 Pukin Dogs Low Vis (1995)", - "countries": "All" - }, - "vx-4 xf-51 1988": { - "name": "VX-4 XF-51 1988", - "countries": "All" - }, - "top gun 114 hb weather": { - "name": "Top Gun 114 Maverick and Goose", - "countries": "All" - }, - "vf-24 renegades": { - "name": "VF-24 Renegades Low-Viz", - "countries": "All" - }, - "vf-11 red rippers (1997)": { - "name": "VF-11 Red Rippers (1997)", - "countries": "All" - }, - "vf-32 fighting swordsmen 100 (2000)": { - "name": "VF-32 Fighting Swordsmen 100 (2000)", - "countries": [ - "USA" - ] - }, - "vf-74 bedevilers 1991": { - "name": "VF-74 Be-Devilers 1991", - "countries": "All" - }, - "santa": { - "name": "Fictional Christmas Livery", - "countries": "All" - }, - "vf-103 sluggers 207 (1991)": { - "name": "VF-103 Sluggers 207 (1991)", - "countries": "All" - }, - "vf-32 fighting swordsmen 101": { - "name": "VF-32 Fighting Swordsmen 101 (1998)", - "countries": "All" - }, - "vf-103 last ride": { - "name": "VF-103 Last Ride", - "countries": "All" - }, - "vf-143 pukin dogs cag": { - "name": "VF-143 Pukin' Dogs CAG", - "countries": "All" - }, - "vx-9 vampires xf240 white whale": { - "name": "VX-9 Vampires XF240 White Whale", - "countries": "All" - }, - "vf-74 adversary": { - "name": "VF-74 Adversary", - "countries": "All" - }, - "vx-9 vandy 41 (1995)": { - "name": "VX-9 Vandy 41 (1995)", - "countries": "All" - }, - "vf-142 ghostriders": { - "name": "VF-142 Ghostriders", - "countries": "All" - }, - "vf-211 fighting checkmates": { - "name": "VF-211 Fighting Checkmates", - "countries": "All" - }, - "vf-101 grim reapers low vis": { - "name": "VF-101 Grim Reapers Low Vis", - "countries": "All" - }, - "chromecat": { - "name": "Fictional Chrome Cat ", - "countries": "All" - }, - "vf-32 fighting swordsmen 102": { - "name": "VF-32 Fighting Swordsmen 102 (1998)", - "countries": "All" - }, - "vf-102 diamondbacks 102": { - "name": "VF-102 Diamondbacks 102 (2000)", - "countries": "All" - }, - "vf-101 red": { - "name": "VF-101 Red", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swing wing, 2 crew. Tomcat", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-15C": { - "name": "F-15C", - "coalition": "blue", - "label": "F-15C Eagle", - "era": "Late Cold War", - "shortLabel": "15C", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-120B*4, AIM-7M*2, AIM-9M*2, Fuel*3", - "name": "AIM-120B*4, AIM-7M*2, AIM-9M*2, Fuel*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*6,Fuel", - "name": "AIM-9*2,AIM-120*6,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-120*4,Fuel*3", - "name": "AIM-9*4,AIM-120*4,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-120*4,Fuel", - "name": "AIM-9*4,AIM-120*4,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel*3", - "name": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*6,Fuel*3", - "name": "AIM-9*2,AIM-120*6,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4,Fuel", - "name": "AIM-9*4,AIM-7*4,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120*8,Fuel", - "name": "AIM-120*8,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4,Fuel*3", - "name": "AIM-9*4,AIM-7*4,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-120*8,Fuel*3", - "name": "AIM-120*8,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", - "name": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", - "roles": [ - "CAP" - ] - } - ], - "filename": "f-15.png", - "enabled": true, - "liveries": { - "106th sqn (8th airbase)": { - "name": "106th SQN (8th Airbase)", - "countries": [ - "ISR" - ] - }, - "433rd weapons sqn (wa)": { - "name": "433rd Weapons SQN (WA)", - "countries": [ - "USA" - ] - }, - "493rd fighter sqn (ln)": { - "name": "493rd Fighter SQN (LN)", - "countries": [ - "USA" - ] - }, - "12th fighter sqn (ak)": { - "name": "12th Fighter SQN (AK)", - "countries": [ - "USA" - ] - }, - "390th fighter sqn": { - "name": "390th Fighter SQN", - "countries": [ - "USA" - ] - }, - "65th aggressor sqn (wa) flanker": { - "name": "65th Aggressor SQN (WA) Flanker", - "countries": [ - "USA", - "AUSAF" - ] - }, - "65th aggressor sqn (wa) super_flanker": { - "name": "65th Aggressor SQN (WA) SUPER_Flanker", - "countries": [ - "USA", - "AUSAF" - ] - }, - "65th aggressor sqn (wa) mig": { - "name": "65th Aggressor SQN (WA) MiG", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ferris scheme": { - "name": "Ferris Scheme", - "countries": [ - "USA" - ] - }, - "58th fighter sqn (eg)": { - "name": "58th Fighter SQN (EG)", - "countries": [ - "USA" - ] - }, - "haf aegean ghost": { - "name": "Hellenic Airforece - Aegean Ghost (Fictional)", - "countries": [ - "GRC" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 2 crew, all weather fighter. Eagle.", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-16C_50": { - "name": "F-16C_50", - "coalition": "blue", - "label": "F-16C Viper", - "era": "Late Cold War", - "shortLabel": "16C", - "loadouts": [ - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", - "name": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 3 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", - "name": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120B*2, AIM-9M*4, FUEL*3", - "name": "AIM-120B*2, AIM-9M*4, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120B*4, AIM-9M*2, FUEL*3", - "name": "AIM-120B*4, AIM-9M*2, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120B*6, FUEL*3", - "name": "AIM-120B*6, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65D*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65D*2, FUEL*2, ECM, TGP", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65H*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65H*2, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65H*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65H*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BRU-57 with 2 x CBU-103 - 202 x CEM, CBU with WCMD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-103*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-103*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BRU-57 with 2 x CBU-105 - 10 x SFW, CBU with WCMD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-105*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-105*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-12*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-12*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-12*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-12*4, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-24 Paveway III - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-24*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-24*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-31-1B*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-31-1B*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-31-3B*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-31-3B*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-38*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-38*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BRU-57 with 2 x GBU-38 - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-38*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-38*4, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts Mk61, Practice", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 3 x Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 3 x Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*4, FUEL*2", - "name": "AIM-120C*2, AIM-9X*4, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "name": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AGM-88C*2, FUEL*3, TGP, HTS", - "name": "AIM-120C*4, AGM-88C*2, FUEL*3, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AGM-88C*4, ECM, TGP, HTS", - "name": "AIM-120C*4, AGM-88C*4, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*3", - "name": "AIM-120C*4, AIM-9X*2, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", - "name": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2", - "name": "AIM-120C*6, FUEL*2", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2, ECM", - "name": "AIM-120C*6, FUEL*2, ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*6, FUEL*2, ECM, TGP", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*3", - "name": "AIM-120C*6, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*3, TGP", - "name": "AIM-120C*6, FUEL*3, TGP", - "roles": [ - "Escort" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - } - ], - "filename": "f-16c.png", - "enabled": true, - "liveries": { - "haf_347_perseus": { - "name": "HAF 347S Perseus Squadron", - "countries": [ - "GRC" - ] - }, - "ami, 5 stormo 23 gruppo": { - "name": "Italian Air Force, 5° Stormo, 23 Gruppo", - "countries": [ - "ITA" - ] - }, - "haf_337_ghost": { - "name": "HAF 337 Ghost Squadron", - "countries": [ - "GRC" - ] - }, - "haf_ 330_thunder": { - "name": "HAF 330 Thunder Squadron", - "countries": [ - "GRC" - ] - }, - "haf_336_olympus": { - "name": "HAF 336 Olympus Squadron", - "countries": [ - "GRC" - ] - }, - "iaf_117th_squadron": { - "name": "IAF 117th squadron", - "countries": [ - "ISR" - ] - }, - "jasdf 8th tfs": { - "name": "JASDF 8th TFS", - "countries": [ - "JPN" - ] - }, - "haf_340_fox": { - "name": "HAF 340 Fox Squadron", - "countries": [ - "GRC" - ] - }, - "haf_346_jason": { - "name": "HAF 346 Jason Squadron", - "countries": [ - "GRC" - ] - }, - "paf_no.9_griffins_1": { - "name": "PAF No.9 Griffins (TRIBUTE TO WC NAUMAN)", - "countries": [ - "PAK" - ] - }, - "522nd_fighter_squadron": { - "name": "522nd Fighter Squadron 'Fireballs'", - "countries": [ - "USA" - ] - }, - "default": { - "name": "default livery", - "countries": [ - "USA" - ] - }, - "18th agrs arctic splinter": { - "name": "18th AGRS Arсtic Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "iaf_115th_aggressors_squadron": { - "name": "IAF 115th aggressors squadron", - "countries": [ - "ISR" - ] - }, - "chile air force 732": { - "name": "Chile Air Force 732", - "countries": [ - "CHL" - ] - }, - "iaf_110th_squadron": { - "name": "IAF 110th squadron", - "countries": [ - "ISR" - ] - }, - "paf_no.29_aggressors": { - "name": "PAF No.29 Aggressor", - "countries": [ - "PAK" - ] - }, - "79th_fighter_squadron": { - "name": "79th Fighter Squadron 'Tigers'", - "countries": [ - "USA" - ] - }, - "paf_no.5_falcons": { - "name": "PAF No.5 Falcons", - "countries": [ - "PAK" - ] - }, - "18th agrs splinter": { - "name": "18th AGRS Blue Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "dark_viper": { - "name": "F-16C Dark Viper", - "countries": [ - "USA" - ] - }, - "jasdf 6th tfs": { - "name": "JASDF 6th TFS", - "countries": [ - "JPN" - ] - }, - "23rd_fighter_squadron": { - "name": "23rd Fighter Squadron 'Fighting Hawks'", - "countries": [ - "USA" - ] - }, - "polish af standard": { - "name": "Polish AF standard", - "countries": [ - "POL" - ] - }, - "480th_fighter_squadron": { - "name": "480th Fighter Squadron 'Warhawks'", - "countries": [ - "USA" - ] - }, - "18th agrs bdu splinter": { - "name": "18th AGRS BDU Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "174th_fighter_squadron": { - "name": "174th Fighter Squadron ANG,Iowa AFB", - "countries": [ - "USA" - ] - }, - "thk_191_filo": { - "name": "Türk Hava Kuvvetleri, 191 Filo", - "countries": [ - "TUR" - ] - }, - "chile air force 746": { - "name": "Chile Air Force 746", - "countries": [ - "CHL" - ] - }, - "haf_335_tiger": { - "name": "HAF 335 Tiger Squadron", - "countries": [ - "GRC" - ] - }, - "77th_fighter_squadron": { - "name": "77th Fighter Squadron 'Gamblers' ", - "countries": [ - "USA" - ] - }, - "132nd_wing _iowa_ang": { - "name": "132nd Wing Iowa ANG, Des Moines AFB", - "countries": [ - "USA" - ] - }, - "usaf 64th aggressor sqn-splinter": { - "name": "USAF 64th Aggressor SQN-Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "14th_fighter_squadron": { - "name": "14th Fighter Squadron 'Samurais'", - "countries": [ - "USA" - ] - }, - "152nd_fighter_squadron": { - "name": "152nd Fighter Squadron 'Las Vaqueros'", - "countries": [ - "USA" - ] - }, - "179th_fighter_squadron": { - "name": "179th Fighter Squadron 'Bulldogs'", - "countries": [ - "USA" - ] - }, - "paf_no.19_sherdils": { - "name": "PAF No.19 Sherdils", - "countries": [ - "PAK" - ] - }, - "64th_aggressor_squadron_ghost": { - "name": "64th Aggressor Squadron “Ghost", - "countries": [ - "USA", - "AUSAF" - ] - }, - "paf_no.9 griffins_2": { - "name": "PAF No.9 Griffins", - "countries": [ - "PAK" - ] - }, - "paf_no.11_arrows": { - "name": "PAF No.11 Arrows", - "countries": [ - "PAK" - ] - }, - "haf_343_star": { - "name": "HAF 343 Star Squadron", - "countries": [ - "GRC" - ] - }, - "80th_fighter_squadron": { - "name": "80th Fighter Squadron, Kunsan AFB", - "countries": [ - "USA" - ] - }, - "36th_fighter_squadron": { - "name": "36th Fighter Squadron Osan Air Base", - "countries": [ - "USA" - ] - }, - "22nd_fighter_squadron": { - "name": "22nd Fighter Squadron 'Stingers'", - "countries": [ - "USA" - ] - }, - "55th_fighter_squadron": { - "name": "55th Fighter Squadron 'Fifty Fifth'", - "countries": [ - "USA" - ] - }, - "iaf_101st_squadron": { - "name": "IAF 101st squadron", - "countries": [ - "ISR" - ] - }, - "polish_af_31blt6th_tactical_sqn": { - "name": "Polish AF 31.Blt 6th Tactical Sqn (Poznań-Krzesiny AB) - Tiger Meet", - "countries": [ - "POL" - ] - }, - "13th_fighter_squadron": { - "name": "13th Fighter Squadron 'Panthers'", - "countries": [ - "USA" - ] - }, - "haf_341_arrow": { - "name": "HAF 341 Arrow Squadron", - "countries": [ - "GRC" - ] - }, - "usaf 64th aggressor sqn - shark": { - "name": "USAF 64th Aggressor SQN - Shark", - "countries": [ - "USA", - "AUSAF" - ] - }, - "chile air force 851": { - "name": "Chile Air Force 851", - "countries": [ - "CHL" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew, all weather fighter and strike. Viper.", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-4E": { - "name": "F-4E", - "coalition": "blue", - "label": "F-4E Phantom II", - "era": "Mid Cold War", - "shortLabel": "4", - "loadouts": [ - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-45*2,AIM-7*2,Fuel*2,ECM", - "name": "AGM-45*2,AIM-7*2,Fuel*2,ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", - "quantity": 4 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-45*4,AIM-7*2,ECM", - "name": "AGM-45*4,AIM-7*2,ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65K*4,AIM-7*2,Fuel*2,ECM", - "name": "AGM-65K*4,AIM-7*2,Fuel*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - }, - { - "name": "F-4 Fuel tank-C", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65K*4,AIM-7M*4,Fuel*3", - "name": "AGM-65K*4,AIM-7M*4,Fuel*3", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM45*2_AGM-65D*4_AIM7*2_ECM", - "name": "AGM45*2_AGM-65D*4_AIM7*2_ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "LAU-7 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4", - "name": "AIM-9*4,AIM-7*4", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "LAU-7 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4,Fuel*2", - "name": "AIM-9*4,AIM-7*4,Fuel*2", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "F-4 Fuel tank-C", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel*3", - "name": "Fuel*3", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2,AIM-7*2,Fuel*2,ECM", - "name": "GBU-10*2,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-12*2,AIM-7*2,Fuel*2,ECM", - "name": "GBU-12*2,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MER6 with 6 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*18,AIM-7*2,ECM", - "name": "Mk-82*18,AIM-7*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*6,AIM-7*2,Fuel*2,ECM", - "name": "Mk-82*6,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-84*2,AIM-7*2,ECM", - "name": "Mk-84*2,AIM-7*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", - "quantity": 4 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk20*12,AIM-7*2,ECM", - "name": "Mk20*12,AIM-7*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk20*6,AIM-7*2,Fuel*2,ECM", - "name": "Mk20*6,AIM-7*2,Fuel*2,ECM", - "roles": [ - "CAS" - ] - } - ], - "filename": "f-4.png", - "enabled": true, - "liveries": { - "haf aegean ghost": { - "name": "Hellenic Airforce - Aegean Ghost", - "countries": [ - "GRC" - ] - }, - "iriaf asia minor": { - "name": "IRIAF Asia Minor", - "countries": [ - "IRN" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "GER" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 2 crew. Phantom", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-5E-3": { - "name": "F-5E-3", - "coalition": "blue", - "label": "F-5E Tiger", - "era": "Mid Cold War", - "shortLabel": "5", - "loadouts": [ - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9B*2", - "name": "AIM-9B*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 150", - "name": "AIM-9B*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 150*3", - "name": "AIM-9B*2, Fuel 150*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 275", - "name": "AIM-9B*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 275*3", - "name": "AIM-9B*2, Fuel 275*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9P*2", - "name": "AIM-9P*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 150", - "name": "AIM-9P*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 150*3", - "name": "AIM-9P*2, Fuel 150*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 275", - "name": "AIM-9P*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 275*3", - "name": "AIM-9P*2, Fuel 275*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9P5*2", - "name": "AIM-9P5*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 150", - "name": "AIM-9P5*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 150*3", - "name": "AIM-9P5*2, Fuel 150*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 275", - "name": "AIM-9P5*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 275*3", - "name": "AIM-9P5*2, Fuel 275*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AN/ASQ-T50 TCTS Pod - ACMI Pod", - "quantity": 1 - }, - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AN/ASQ-T50, AIM-9P, Fuel 150", - "name": "AN/ASQ-T50, AIM-9P, Fuel 150", - "roles": [] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Antiship Mk82", - "name": "Antiship Mk82", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "CBU-52B - 220 x HE/Frag bomblets", - "quantity": 4 - } - ], - "enabled": true, - "code": "CBU-52B*4,AIM-9P*2,Fuel 275", - "name": "CBU-52B*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "CBU-52B - 220 x HE/Frag bomblets", - "quantity": 5 - } - ], - "enabled": true, - "code": "CBU-52B*5,AIM-9*2", - "name": "CBU-52B*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4,AIM-9P*2,Fuel 275", - "name": "GBU-12*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "name": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - } - ], - "enabled": true, - "code": "LAU-3 HE*4,AIM-9P*2,Fuel 275", - "name": "LAU-3 HE*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 4 - } - ], - "enabled": true, - "code": "LAU-3 HEAT*4,AIM-9P*2,Fuel 275", - "name": "LAU-3 HEAT*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "name": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - } - ], - "enabled": true, - "code": "LAU-68 HE*4,AIM-9P*2,Fuel 275", - "name": "LAU-68 HE*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 4 - } - ], - "enabled": true, - "code": "LAU-68 HEAT*4,AIM-9P*2,Fuel 275", - "name": "LAU-68 HEAT*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "M117 - 750lb GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "M-117*4,AIM-9P*2,Fuel 275", - "name": "M-117*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "M117 - 750lb GP Bomb LD", - "quantity": 5 - } - ], - "enabled": true, - "code": "M-117*5,AIM-9*2", - "name": "M-117*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82LD*4,AIM-9P*2,Fuel 275", - "name": "Mk-82LD*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 5 - } - ], - "enabled": true, - "code": "Mk-82LD*5,AIM-9*2", - "name": "Mk-82LD*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "5 x Mk-82 - 500lb GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82LD*7,AIM-9P*2, Fuel 275*2", - "name": "Mk-82LD*7,AIM-9P*2, Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82SE*4,AIM-9P*2,Fuel 275", - "name": "Mk-82SE*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 5 - } - ], - "enabled": true, - "code": "Mk-82SE*5,AIM-9*2", - "name": "Mk-82SE*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "5 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82SE*7,AIM-9P*2, Fuel 275*2", - "name": "Mk-82SE*7,AIM-9P*2, Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - } - ], - "liveryID": [ - "ir iriaf 43rd tfs" - ], - "filename": "f-5.png", - "enabled": true, - "liveries": { - "us aggressor vfc-13 40": { - "name": "Aggressor VFC-13 40", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch swiss generic": { - "name": "Swiss Generic two-tone skin", - "countries": [ - "SUI" - ] - }, - "tw ngrc 5315": { - "name": "NGRC 5thFG 5315", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3079": { - "name": "J-3079", - "countries": [ - "SUI" - ] - }, - "sa royal saudi air force": { - "name": "Royal Saudi Air Force", - "countries": [ - "SAU" - ] - }, - "no 336 sq": { - "name": "336 Skvadron", - "countries": [ - "NOR" - ] - }, - "tw rocaf 7thfg(m)": { - "name": "ROCAF 7thFG(LV)", - "countries": [ - "USA", - "AUSAF" - ] - }, - "us aggressor vfc-111 105 wwii b": { - "name": "Sundowners VFC-111 105 WWII B", - "countries": [ - "USA", - "AUSAF" - ] - }, - "br fab 4828": { - "name": "2/1 GAvCa - FAB 4828", - "countries": [ - "BRA" - ] - }, - "usaf 'southeast asia'": { - "name": "USAF 'Southeast Asia'", - "countries": [ - "USA", - "AUSAF" - ] - }, - "br fab 4846": { - "name": "FAB 4846", - "countries": [ - "BRA" - ] - }, - "aggressor vfc-13 21": { - "name": "Aggressor VFC-13 21", - "countries": [ - "USA", - "AUSAF" - ] - }, - "no 334 sqn 373": { - "name": "RNoAF 334 sqn 373", - "countries": [ - "NOR" - ] - }, - "rocaf 7th fighter group": { - "name": "ROCAF 7th Fighter Group", - "countries": [ - "AUSAF" - ] - }, - "ch j-3036 2017": { - "name": "J-3036 Sion 2017", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-111 116": { - "name": "Sundowners VFC-116", - "countries": [ - "USA", - "AUSAF" - ] - }, - "black 'mig-28'": { - "name": "black 'Mig-28'", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3073 2017": { - "name": "J-3073_2017", - "countries": [ - "SUI" - ] - }, - "fi 11th fs lapland air command": { - "name": "FiAF 11th FS Lapland Air Command", - "countries": [ - "FIN" - ] - }, - "ir iriaf azarakhsh": { - "name": "HESA Azarakhsh", - "countries": [ - "IRN" - ] - }, - "ch j-3098": { - "name": "J-3098", - "countries": [ - "SUI" - ] - }, - "ir iriaf 43rd tfs": { - "name": "IRIAF - 43rd TFS", - "countries": [ - "IRN" - ] - }, - "no 338 sqn 215": { - "name": "RNoAF 338 sqn 215", - "countries": [ - "NOR" - ] - }, - "us usaf grape 31": { - "name": "USAF Grape 31", - "countries": [ - "USA", - "AUSAF" - ] - }, - "no 332 sqn ah-p": { - "name": "RNoAF 332 sqn AH-P", - "countries": [ - "NOR" - ] - }, - "ch j-3001 variante 1996": { - "name": "J-3001 GRD Emmen 1996", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-111 01": { - "name": "Sundowners VFC-111 01", - "countries": [ - "USA", - "AUSAF" - ] - }, - "3rd main jet base group command, turkey": { - "name": "133 squadron, 3rd Main Jet Base Group Command, Turkey", - "countries": [ - "TUR" - ] - }, - "kr rokaf 10th fighter wing": { - "name": "ROKAF 10th FW KF-5E 10-584", - "countries": [ - "KOR" - ] - }, - "sp spanish air force 21-51": { - "name": "Ejercito del Aire Camo 21-51", - "countries": [ - "SPN" - ] - }, - "aggressor vfc-13 11": { - "name": "Aggressor VFC-13 11", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3001 variante 1986": { - "name": "J-3001 GRD Emmen 1986", - "countries": [ - "SUI" - ] - }, - "usa standard": { - "name": "Standard Gray", - "countries": [ - "BRA", - "MYS", - "AUS", - "ABH", - "RUS", - "SPN", - "ISR", - "USA", - "BHR", - "BLR", - "HRV", - "RSO", - "SVK", - "IRN", - "UKR", - "TUR", - "JPN", - "PRK", - "SRB", - "KAZ", - "BGR", - "BEL", - "INS", - "THA", - "AUSAF", - "PAK", - "JOR", - "FIN", - "MEX", - "NOR", - "IRQ", - "SYR", - "ITA", - "GRC", - "POL", - "NETH", - "GER", - "SUI", - "CHN", - "SAU", - "SWE", - "ROU", - "FRA", - "KOR", - "HUN", - "AUT", - "GRG", - "DEN", - "TUN", - "EGY", - "IND", - "CZE", - "CAN", - "SDN", - "UK" - ] - }, - "5th fs merzifon air base, turkey": { - "name": "5th fs Merzifon air base, Turkish air force", - "countries": [ - "TUR" - ] - }, - "ch j-3001 variante 2000": { - "name": "J-3001 FlSt 08 2000", - "countries": [ - "SUI" - ] - }, - "ir iriaf camo": { - "name": "IRIAF F-5E Standard", - "countries": [ - "IRN" - ] - }, - "it aereonautica militare italiana": { - "name": "Aereonautica Militare Italiana", - "countries": [ - "ITA" - ] - }, - "ch j-3038": { - "name": "J-3038", - "countries": [ - "SUI" - ] - }, - "ch j-3033_2017": { - "name": "J-3033_2017", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-13 28 fict splinter": { - "name": "Aggressor VFC-13 28 Fictional Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3025": { - "name": "J-3025 FlSt 11/18 January 2006", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-13 01": { - "name": "Aggressor VFC-13 01", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch patrouille suisse j-3088": { - "name": "Patrouille Suisse J-3088", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-13 25": { - "name": "Aggressor VFC-13 25", - "countries": [ - "USA", - "AUSAF" - ] - }, - "no 334 sqn ri-h": { - "name": "RNoAF 334 sqn RI-H", - "countries": [ - "NOR" - ] - }, - "br fab 4841": { - "name": "FAB 4841 60th an", - "countries": [ - "BRA" - ] - }, - "aggressor marine scheme": { - "name": "Aggressor Marine Scheme", - "countries": [ - "USA", - "AUSAF" - ] - }, - "sp spanish air force 464-48": { - "name": "Ejercito del Aire 464-48", - "countries": [ - "SPN" - ] - }, - "gr haf f-5e grey": { - "name": "HAF F-5E Grey", - "countries": [ - "GRC" - ] - }, - "tr turkish stars": { - "name": "Turkish Stars", - "countries": [ - "TUR" - ] - }, - "gb no.29 squadron raf": { - "name": "No.29 Squadron RAF (Fictional)", - "countries": [ - "UK" - ] - }, - "br fab 4834": { - "name": "1/1 GAvCa - FAB 4834", - "countries": [ - "BRA" - ] - }, - "ch j-3026": { - "name": "J-3026 FlSt 11 approx. 1989", - "countries": [ - "SUI" - ] - }, - "aggressor snake scheme": { - "name": "Aggressor Snake Scheme", - "countries": [ - "USA", - "AUSAF" - ] - }, - "us aggressor vfc-111 115": { - "name": "Sundowners VFC-115", - "countries": [ - "USA", - "AUSAF" - ] - }, - "us aggressor vmft-401 02 2011": { - "name": "Aggressor VMFT-401 02 2011", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3008": { - "name": "J-3008 FlSt 08/19 February 2005", - "countries": [ - "SUI" - ] - }, - "aggressor desert scheme": { - "name": "Aggressor Desert Scheme", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3074": { - "name": "J-3074", - "countries": [ - "SUI" - ] - }, - "ch j-3036": { - "name": "J-3036 FlSt 01 1985", - "countries": [ - "SUI" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, single crew. Tiger", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-86F Sabre": { - "name": "F-86F Sabre", - "coalition": "blue", - "label": "F-86F Sabre", - "era": "Early Cold War", - "shortLabel": "86", - "loadouts": [ - { - "items": [ - { - "name": "Fuel Tank 120 gallons", - "quantity": 2 - } - ], - "enabled": true, - "code": "120gal Fuel*2", - "name": "120gal Fuel*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - }, - { - "name": "Fuel Tank 120 gallons", - "quantity": 2 - } - ], - "enabled": true, - "code": "120gal Fuel*2, 200gal Fuel*2", - "name": "120gal Fuel*2, 200gal Fuel*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 120 gallons", - "quantity": 2 - }, - { - "name": "LAU-7 with AIM-9B Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "120gal Fuel*2, GAR-8*2", - "name": "120gal Fuel*2, GAR-8*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - } - ], - "enabled": true, - "code": "200gal Fuel*2", - "name": "200gal Fuel*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - }, - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "200gal Fuel*2, AN-M64*2", - "name": "200gal Fuel*2, AN-M64*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - }, - { - "name": "2 x HVAR, UnGd Rkts", - "quantity": 4 - } - ], - "enabled": true, - "code": "200gal Fuel*2, HVARx2*4", - "name": "200gal Fuel*2, HVARx2*4", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AN-M64*2", - "name": "AN-M64*2", - "roles": [ - "CAS", - "Strike", - "Antiship Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-7 with AIM-9B Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "GAR-8*2", - "name": "GAR-8*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "2 x HVAR, UnGd Rkts", - "quantity": 8 - } - ], - "enabled": true, - "code": "HVAR*16", - "name": "HVAR*16", - "roles": [ - "Strike", - "CAS", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "M117 - 750lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "M117*2", - "name": "M117*2", - "roles": [ - "CAS", - "Strike", - "Antiship Strike" - ] - } - ], - "filename": "f-86.png", - "enabled": true, - "liveries": { - "us air force (skyblazers)": { - "name": "US Air Force Jet Team Skyblazer", - "countries": [ - "USA" - ] - }, - "canada air force": { - "name": "Canada Air Force", - "countries": [ - "CAN" - ] - }, - "us air force (squadron 39)": { - "name": "US Air Force (Squadron 39)", - "countries": [ - "USA" - ] - }, - "iiaf bare metall": { - "name": "IIAF Bare Metal Weathered", - "countries": [ - "IRN" - ] - }, - "us air force (green)": { - "name": "US Air Force (Green)", - "countries": [ - "USA" - ] - }, - "us air force (ex-usaf f-86a sabre)": { - "name": "US Air Force ex-USAF F-86A Sabre", - "countries": [ - "USA" - ] - }, - "default livery": { - "name": "default livery", - "countries": [ - "BRA", - "CUB", - "MYS", - "ARE", - "AUS", - "ABH", - "RUS", - "PHL", - "SPN", - "ISR", - "SUN", - "USA", - "BHR", - "MAR", - "BLR", - "HRV", - "DZA", - "OMN", - "RSO", - "SVK", - "HND", - "IRN", - "UKR", - "TUR", - "JPN", - "PRK", - "SRB", - "IDN", - "KAZ", - "BGR", - "BEL", - "INS", - "THA", - "LBY", - "AUSAF", - "VEN", - "PAK", - "JOR", - "RSA", - "FIN", - "MEX", - "KWT", - "NOR", - "IRQ", - "SYR", - "ITA", - "NZG", - "GRC", - "POL", - "NETH", - "GER", - "SUI", - "CHN", - "SAU", - "SWE", - "YEM", - "VNM", - "ROU", - "RSI", - "FRA", - "CHL", - "KOR", - "HUN", - "AUT", - "GRG", - "DEN", - "TUN", - "EGY", - "IND", - "CZE", - "ETH", - "CAN", - "SDN", - "QAT", - "UK", - "YUG" - ] - }, - "royal saudi air force": { - "name": "RSAF", - "countries": [ - "SAU" - ] - }, - "us air force": { - "name": "US Air Force", - "countries": [ - "USA" - ] - }, - "haf 342sqn": { - "name": "Hellenic Airforce 342sqn", - "countries": [ - "GRC" - ] - }, - "japan air force": { - "name": "Japan Air Force", - "countries": [ - "JPN" - ] - }, - "haf 341sqn": { - "name": "Hellenic Airforce 341sqn", - "countries": [ - "GRC" - ] - }, - "us air force (code fu-178)": { - "name": "US Air Force FU-178", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "Single engine, swept wing, 1 crew. Sabre", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "FA-18C_hornet": { - "name": "FA-18C_hornet", - "coalition": "blue", - "era": "Late Cold War", - "label": "F/A-18C", - "shortLabel": "18", - "loadouts": [ - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-84D Harpoon AShM", - "quantity": 4 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", - "name": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, AIM-7M*2, FUEL*1", - "name": "AIM-9M*2, AIM-7M*2, FUEL*1", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, AIM-7M*2, FUEL*2", - "name": "AIM-9M*2, AIM-7M*2, FUEL*2", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-115C with AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9M*2, AIM-7M*4, FUEL*3", - "name": "AIM-9M*2, AIM-7M*4, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M*2, ATFLIR, FUEL", - "name": "AIM-9M*2, ATFLIR, FUEL", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M*2, ATFLIR, FUEL*2", - "name": "AIM-9M*2, ATFLIR, FUEL*2", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x CBU-99 - 490lbs, 247 x HEAT Bomblets", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, CBU-99*4, FUEL*2", - "name": "AIM-9M*2, CBU-99*4, FUEL*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, LAU-61*4, FUEL*2", - "name": "AIM-9M*2, LAU-61*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, LAU-68*4, FUEL*2", - "name": "AIM-9M*2, LAU-68*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-20*4, FUEL*2", - "name": "AIM-9M*2, MK-20*4, FUEL*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-82*4, FUEL*2", - "name": "AIM-9M*2, MK-82*4, FUEL*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-82SE*4, FUEL*2", - "name": "AIM-9M*2, MK-82SE*4, FUEL*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-83*2, FUEL*2", - "name": "AIM-9M*2, MK-83*2, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-83*4, FUEL*2", - "name": "AIM-9M*2, MK-83*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-84*2, FUEL*2", - "name": "AIM-9M*2, MK-84*2, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, ZUNI*4, FUEL*2", - "name": "AIM-9M*2, ZUNI*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*6, AIM-7M*2, FUEL*2", - "name": "AIM-9M*6, AIM-7M*2, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - }, - { - "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9M*6, AIM-7M*2, FUEL*3", - "name": "AIM-9M*6, AIM-7M*2, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 4 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, AGM-65D*4, ATFLIR, FUEL", - "name": "AIM-9X*2, AIM-120C-5*1, AGM-65D*4, ATFLIR, FUEL", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-84H SLAM-ER (Expanded Response)", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "AWW-13 DATALINK POD", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", - "name": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-31(V)4/B - JDAM, 2000lb GPS Guided Penetrator Bomb", - "quantity": 4 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", - "name": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BRU-55 with 2 x GBU-38 - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, GBU-38*4, GBU-12*4, ATFLIR, FUEL", - "name": "AIM-9X*2, AIM-120C-5*1, GBU-38*4, GBU-12*4, ATFLIR, FUEL", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", - "name": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "LAU-115 with 2 x LAU-127 AIM-120C AMRAAM - Active Radar AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*6, FUEL*3", - "name": "AIM-9X*2, AIM-120C-5*6, FUEL*3", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - } - ], - "enabled": true, - "code": "Carrier Landing", - "name": "Carrier Landing", - "roles": [] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - } - ], - "filename": "fa-18c.png", - "enabled": true, - "liveries": { - "vfa-192": { - "name": "VFA-192", - "countries": [ - "USA" - ] - }, - "nsawc brown splinter": { - "name": "NSAWC brown splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "vfa-34": { - "name": "VFA-34", - "countries": [ - "USA" - ] - }, - "vmfa-232": { - "name": "VMFA-232", - "countries": [ - "USA" - ] - }, - "vmfat-101": { - "name": "VMFAT-101", - "countries": [ - "USA" - ] - }, - "vmfa-232 high visibility": { - "name": "VMFA-232 high visibility", - "countries": [ - "USA" - ] - }, - "vmfat-101 high visibility": { - "name": "VMFAT-101 high visibility", - "countries": [ - "USA" - ] - }, - "vfa-37": { - "name": "VFA-37", - "countries": [ - "USA" - ] - }, - "fictional russia air force": { - "name": "Fictional Russia Air Force", - "countries": [ - "AUSAF", - "RUS" - ] - }, - "canada 150 demo jet": { - "name": "Canada 150 Demo Jet", - "countries": [ - "CAN" - ] - }, - "fictional uk air force": { - "name": "Fictional UK Air Force", - "countries": [ - "UK" - ] - }, - "vfa-131": { - "name": "VFA-131", - "countries": [ - "USA" - ] - }, - "vmfa-122 high visibility": { - "name": "VMFA-122 high visibility", - "countries": [ - "USA" - ] - }, - "spain 462th escuadron c.15-79": { - "name": "Spain 462th Escuadron C.15-79", - "countries": [ - "SPN" - ] - }, - "vmfat-101 high visibility 2005": { - "name": "VMFAT-101 high visibility 2005", - "countries": [ - "USA" - ] - }, - "vmfa-323": { - "name": "VMFA-323", - "countries": [ - "USA" - ] - }, - "vx-31 cona": { - "name": "VX-31 CoNA", - "countries": [ - "USA" - ] - }, - "fictional turkey 162nd sq": { - "name": "162nd Sqn Harpoon", - "countries": [ - "TUR" - ] - }, - "nawdc brown": { - "name": "NAWDC brown", - "countries": [ - "USA", - "AUSAF" - ] - }, - "spain 151th escuadron c.15-14": { - "name": "Spain 151_14 Escuadron C.15-14", - "countries": [ - "SPN" - ] - }, - "spain 151th escuadron c.15-24": { - "name": "Spain 151_24 Escuadron C.15-24", - "countries": [ - "SPN" - ] - }, - "vfa-106": { - "name": "VFA-106", - "countries": [ - "USA" - ] - }, - "spain 121th escuadron c.15-45": { - "name": "Spain 121 Escuadron C.15-45", - "countries": [ - "SPN" - ] - }, - "vfa-97": { - "name": "VFA-97", - "countries": [ - "USA" - ] - }, - "vx-9": { - "name": "VX-9", - "countries": [ - "USA" - ] - }, - "spain 111th escuadron c.15-73": { - "name": "Spain 111 Escuadron C.15-73", - "countries": [ - "SPN" - ] - }, - "switzerland": { - "name": "Switzerland", - "countries": [ - "SUI" - ] - }, - "vx-23": { - "name": "VX-23", - "countries": [ - "USA" - ] - }, - "vfa-83": { - "name": "VFA-83", - "countries": [ - "USA" - ] - }, - "australian 75th squadron": { - "name": "Australian sqn 75", - "countries": [ - "AUS" - ] - }, - "canada 425th squadron": { - "name": "Canada 425th Squadron", - "countries": [ - "CAN" - ] - }, - "spain 151th escuadron c.15-18": { - "name": "Spain 151_18 Escuadron C.15-18", - "countries": [ - "SPN" - ] - }, - "nsawc gray": { - "name": "NSAWC gray", - "countries": [ - "USA" - ] - }, - "vfa-87": { - "name": "VFA-87", - "countries": [ - "USA" - ] - }, - "nawdc blue": { - "name": "NAWDC blue", - "countries": [ - "USA", - "AUSAF" - ] - }, - "australian 77th squadron": { - "name": "Australian sqn 77", - "countries": [ - "AUS" - ] - }, - "vmfa-251 high visibility": { - "name": "VMFA-251 high visibility", - "countries": [ - "USA" - ] - }, - "vmfa-531": { - "name": "VMFA-531", - "countries": [ - "USA" - ] - }, - "viper": { - "name": "Viper", - "countries": [ - "USA" - ] - }, - "iceman": { - "name": "Iceman", - "countries": [ - "USA", - "AUSAF" - ] - }, - "spain 121th escuadron c.15-60": { - "name": "Spain 121 Escuadron C.15-60", - "countries": [ - "SPN" - ] - }, - "nsawc blue": { - "name": "NSAWC blue", - "countries": [ - "USA", - "AUSAF" - ] - }, - "blue angels jet team": { - "name": "Blue Angels Jet Team", - "countries": [ - "USA" - ] - }, - "fictional israel air force": { - "name": "Fictional Israel Air Force", - "countries": [ - "ISR" - ] - }, - "spain 462th escuadron c.15-90": { - "name": "Spain 462th Escuadron C.15-90", - "countries": [ - "SPN" - ] - }, - "vmfa-323 high visibility": { - "name": "VMFA-323_high visibility", - "countries": [ - "USA" - ] - }, - "maverick": { - "name": "Maverick", - "countries": [ - "USA" - ] - }, - "nawdc black": { - "name": "NAWDC black", - "countries": [ - "USA", - "AUSAF" - ] - }, - "kuwait 9th squadron": { - "name": "9th Squadron", - "countries": [ - "KWT" - ] - }, - "vmfa-251": { - "name": "VMFA-251", - "countries": [ - "USA" - ] - }, - "vmfa-314": { - "name": "VMFA-314", - "countries": [ - "USA" - ] - }, - "fictional ukraine air force": { - "name": "Fictional Ukraine Air Force", - "countries": [ - "UKR" - ] - }, - "canada 409th squadron": { - "name": "Canada 409th Squadron", - "countries": [ - "CAN" - ] - }, - "canada norad 60 demo jet": { - "name": "Canada NORAD 60 Demo Jet", - "countries": [ - "CAN" - ] - }, - "spain 111th escuadron c.15-88": { - "name": "Spain 111 Escuadron C.15-88", - "countries": [ - "SPN" - ] - }, - "spain 211th escuadron c.15-76": { - "name": "Spain 211th Escuadron C.15-76", - "countries": [ - "SPN" - ] - }, - "finland 31": { - "name": "Finland", - "countries": [ - "FIN" - ] - }, - "spain 151th escuadron c.15-23": { - "name": "Spain 151_23 Escuadron C.15-23", - "countries": [ - "SPN" - ] - }, - "vfa-122": { - "name": "VFA-122", - "countries": [ - "USA" - ] - }, - "spain 151th escuadron c.15-14 tiger meet": { - "name": "Spain 151th Escuadron C.15-14 Tiger Meet", - "countries": [ - "SPN" - ] - }, - "vfc-12": { - "name": "VFC-12", - "countries": [ - "USA", - "AUSAF" - ] - }, - "spain 211th escuadron c.15-77": { - "name": "Spain 211th Escuadron C.15-77", - "countries": [ - "SPN" - ] - }, - "spain 121th escuadron c.15-34 50th anniversary": { - "name": "Spain 121th Escuadron C.15-34 34th Anniversary", - "countries": [ - "SPN" - ] - }, - "default livery": { - "name": "default livery", - "countries": [ - "BRA", - "CUB", - "MYS", - "ARE", - "AUS", - "ABH", - "RUS", - "PHL", - "SPN", - "ISR", - "SUN", - "USA", - "BHR", - "MAR", - "BLR", - "HRV", - "DZA", - "OMN", - "RSO", - "SVK", - "HND", - "IRN", - "UKR", - "TUR", - "JPN", - "PRK", - "SRB", - "IDN", - "KAZ", - "BGR", - "BEL", - "INS", - "THA", - "LBY", - "AUSAF", - "VEN", - "PAK", - "JOR", - "RSA", - "FIN", - "MEX", - "KWT", - "NOR", - "IRQ", - "SYR", - "ITA", - "NZG", - "GRC", - "POL", - "NETH", - "GER", - "SUI", - "CHN", - "SAU", - "SWE", - "YEM", - "VNM", - "ROU", - "RSI", - "FRA", - "CHL", - "KOR", - "HUN", - "AUT", - "GRG", - "DEN", - "TUN", - "EGY", - "IND", - "CZE", - "ETH", - "CAN", - "SDN", - "QAT", - "UK", - "YUG" - ] - }, - "spain 121th escuadron c.15-50": { - "name": "Spain 121 Escuadron C.15-50", - "countries": [ - "SPN" - ] - }, - "vfa-113": { - "name": "VFA-113", - "countries": [ - "USA" - ] - }, - "vmfa-312": { - "name": "VMFA-312", - "countries": [ - "USA" - ] - }, - "kuwait 25th squadron": { - "name": "9th Squadron", - "countries": [ - "KWT" - ] - }, - "vmfa-312 high visibility": { - "name": "VMFA-312 high visibility", - "countries": [ - "USA" - ] - }, - "vmfa-122": { - "name": "VMFA-122", - "countries": [ - "USA" - ] - }, - "vfa-106 high visibility": { - "name": "VFA-106 high visibility", - "countries": [ - "USA" - ] - }, - "finland 21": { - "name": "Finland", - "countries": [ - "FIN" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 1 crew, fighter and strike. Hornet", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "FW-190A8": { - "name": "FW-190A8", - "coalition": "red", - "label": "FW-190A8 Würger", - "era": "WW2", - "shortLabel": "190", - "loadouts": [ - { - "items": [ - { - "name": "AB 250-2 - 17 x SD-10A, 250kg CBU with 10kg Frag/HE submunitions", - "quantity": 1 - } - ], - "enabled": true, - "code": "AB 250 (w/ SD 10A)", - "name": "AB 250 (w/ SD 10A)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AB 250-2 - 144 x SD-2, 250kg CBU with HE submunitions", - "quantity": 1 - } - ], - "enabled": true, - "code": "AB 250 (w/ SD 2)", - "name": "AB 250 (w/ SD 2)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AB 500-1 - 34 x SD-10A, 500kg CBU with 10kg Frag/HE submunitions", - "quantity": 1 - } - ], - "enabled": true, - "code": "AB 500 (w/ SD 10A)", - "name": "AB 500 (w/ SD 10A)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", - "quantity": 2 - } - ], - "enabled": true, - "code": "BR 21", - "name": "BR 21", - "roles": [] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "300 liter Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank 300 liters", - "name": "Fuel Tank 300 liters", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 250 Type 3 J - 250kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 250 J", - "name": "SC 250 J", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 250 Type 1 L2 - 250kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 250 L2", - "name": "SC 250 L2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "4 x SC 50 - 50kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 50 * 4", - "name": "SC 50 * 4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 500 J - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 500 J", - "name": "SC 500 J", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 500 L2 - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 500 L2", - "name": "SC 500 L2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SD 250 Stg - 250kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SD 250 Stg", - "name": "SD 250 Stg", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SD 500 A - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SD 500 A", - "name": "SD 500 A", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "Without pylon", - "name": "Without pylon", - "roles": [] - } - ], - "filename": "fw190.png", - "enabled": true, - "liveries": { - "fw190_fuselage_d_jg301": { - "name": "JG 301", - "countries": [ - "GER", - "NZG" - ] - }, - "captured_ra": { - "name": "Captured_RA", - "countries": [ - "SUN" - ] - }, - "fictional ijn carrier akagi ai-103": { - "name": "Fictional IJN Carrier Akagi AI-103", - "countries": [ - "JPN" - ] - }, - "fictional ijn otu tsukuba tsu-102": { - "name": "Fictional IJN OTU Tsukuba Tsu-102", - "countries": [ - "JPN" - ] - }, - "fw-190a8 yellow 4": { - "name": "FW190A8 Yellow 4", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8 rhaf": { - "name": "Fw 190 A8 RHAF", - "countries": [ - "HUN" - ] - }, - "jg3 white nose wulf": { - "name": "Fw190A8 'White nose Wulf'", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8_2.jg 54": { - "name": "2.JG 54", - "countries": [ - "GER", - "NZG" - ] - }, - "fictional ijn carrier soryu bi-112": { - "name": "Fictional IJN Carrier Soryu BI-112", - "countries": [ - "JPN" - ] - }, - "black 13 schwarze katze from jg1": { - "name": "Fw190_JG1_Gen._'Schwarze Katze'_Win.", - "countries": [ - "GER", - "NZG" - ] - }, - "turkish air force, 5th fr (1942)": { - "name": "Turkish Air Force, 5th FR (1942)", - "countries": [ - "AUSAF", - "TUR" - ] - }, - "fw-190a8 jg26 priller": { - "name": "Fw 190 A8 JG26 Priller", - "countries": [ - "GER", - "HUN", - "NZG" - ] - }, - "inspired by jg2 skin of early fw 190a": { - "name": "Fw190A8 JG2 Generic", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8": { - "name": "FW190A8", - "countries": "All" - }, - "fw190_alfred_bindseil": { - "name": "6.JG 1_Alfred Bindseil", - "countries": [ - "GER", - "NZG" - ] - }, - "fictional ijn 256th kokutai rai-153": { - "name": "Fictional IJN 256th Kokutai Rai-153", - "countries": [ - "JPN" - ] - }, - "fictional ijn carrier akagi ai-151": { - "name": "Fictional IJN Carrier Akagi AI-151", - "countries": [ - "JPN" - ] - }, - "fw-190a8_raf": { - "name": "FW190A8/R-2 PE882, No. 1426 Flight RAF - Late", - "countries": [ - "UK" - ] - }, - "factory skin": { - "name": "FW190A8 Luftwaffe", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8_2.jg 54_hans dortenmann": { - "name": "2.JG 54_Hans Dortenmann", - "countries": [ - "GER", - "NZG" - ] - }, - "fw 190 a-8 czech avia s.90": { - "name": "Fw 190 A-8 Czech Avia S.90", - "countries": [ - "CZE" - ] - }, - "fw190_ewald_preisz": { - "name": "6.JG 300_Ewald Preisz", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8 jg3 maximowitz": { - "name": "Fw 190 A8 JG3 Maximowitz", - "countries": [ - "GER", - "HUN", - "NZG" - ] - }, - "roaf-grupul7": { - "name": "RoAF-Grupul7", - "countries": [ - "ROU" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Würger ", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "FW-190D9": { - "name": "FW-190D9", - "coalition": "red", - "label": "FW-190D9 Dora", - "era": "WW2", - "shortLabel": "190", - "loadouts": [ - { - "items": [ - { - "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", - "quantity": 2 - } - ], - "enabled": true, - "code": "BR 21", - "name": "BR 21", - "roles": [ - "CAP", - "CAP", - "Strike", - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "300 liter Fuel Tank Type E2", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank", - "name": "Fuel Tank", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "13 R4M 3.2kg UnGd air-to-air rocket", - "quantity": 2 - } - ], - "enabled": true, - "code": "R4M", - "name": "R4M", - "roles": [ - "CAP", - "CAP", - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "SC 500 J - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC500", - "name": "SC500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - } - ], - "filename": "fw190.png", - "enabled": true, - "liveries": { - "fw-190d9_5jg301": { - "name": "FW-190_5JG301.1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_iv.jg 26_hans dortenmann": { - "name": " Oblt. Hans Dortenmann, IV./JG 26, 1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_red": { - "name": "FW_190D9_Red.1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_13.jg 51_heinz marquardt": { - "name": " Heinz-Marquardt, 13./JG 51, 1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_jg54": { - "name": "FW-190D9_JG54.1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_black 4 of stab iijg 6": { - "name": "FW-190D9_Black <4 of Stab II/JG 6", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_usa": { - "name": "FW-190_USA_Standard.1943", - "countries": [ - "USA" - ] - }, - "fw-190d9_gb": { - "name": "FW-190_GB_Standart.1943", - "countries": [ - "UK" - ] - }, - "fw-190d9_ussr": { - "name": "FW-190 WNr 210251 USSR (Captured. 1943)", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Dora", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "H-6J": { - "name": "H-6J", - "coalition": "red", - "label": "H-6 J Badger", - "era": "Mid Cold War", - "shortLabel": "H6", - "loadouts": [ - { - "items": [ - { - "name": "12 x 250-2 - 250kg GP Bombs HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "250-2 HD Bomb x 12 in Bay", - "name": "250-2 HD Bomb x 12 in Bay", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "24 x 250-2 - 250kg GP Bombs HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "250-2 HD Bomb x 24 in Bay", - "name": "250-2 HD Bomb x 24 in Bay", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MER6 - 6 x 250-3 - 250kg GP Bombs LD", - "quantity": 6 - } - ], - "enabled": true, - "code": "250-3 LD Bomb x 36", - "name": "250-3 LD Bomb x 36", - "roles": [ - "Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "KD-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "KD-20 x 4", - "name": "KD-20 x 4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "KD-20", - "quantity": 6 - } - ], - "enabled": true, - "code": "KD-20 x 6", - "name": "KD-20 x 6", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "KD-63", - "quantity": 2 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - }, - { - "name": "KD-20", - "quantity": 2 - } - ], - "enabled": true, - "code": "KD-63 x 2, KD-20 x 2", - "name": "KD-63 x 2, KD-20 x 2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "KD-63", - "quantity": 2 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - }, - { - "name": "KD-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "KD-63 x 2, KD-20 x 4", - "name": "KD-63 x 2, KD-20 x 4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "KD-63", - "quantity": 4 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "KD-63 x 4", - "name": "KD-63 x 4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "YJ-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "YJ-12 x 2", - "name": "YJ-12 x 2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "YJ-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "YJ-12 x 4", - "name": "YJ-12 x 4", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "YJ-83K", - "quantity": 6 - } - ], - "enabled": true, - "code": "YJ-83K x 6", - "name": "YJ-83K x 6", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "h-6.png", - "enabled": true, - "liveries": { - "planaf standard": { - "name": "PLANAF Standard", - "countries": [ - "CHN" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 4 crew bomber. Badger", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "I-16": { - "name": "I-16", - "coalition": "red", - "label": "I-16", - "era": "WW2", - "shortLabel": "I16", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "RS-82", - "quantity": 6 - } - ], - "enabled": true, - "code": "6xRS-82", - "name": "6xRS-82", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100SV", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xFAB-100", - "name": "2xFAB-100", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "RS-82", - "quantity": 6 - }, - { - "name": "FAB-100SV", - "quantity": 2 - } - ], - "enabled": true, - "code": "6xRS-82, 2xFAB-100", - "name": "6xRS-82, 2xFAB-100", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "RS-82", - "quantity": 6 - }, - { - "name": "I-16 External Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "6xRS-82, 2xDropTank-93L", - "name": "6xRS-82, 2xDropTank-93L", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "I-16 External Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xDropTank-93L", - "name": "2xDropTank-93L", - "roles": [ - "CAP", - "Reconnaissance", - "Escort" - ] - } - ], - "filename": "i-16.png", - "enabled": true, - "liveries": { - "silver-black demo": { - "name": "Silver-black paint scheme", - "countries": [ - "SUN", - "RUS" - ] - }, - "red army camo": { - "name": "Red Army Air Force Camouflage", - "countries": [ - "SUN", - "RUS" - ] - }, - "spain nationalists": { - "name": "Spain (Nationalists)", - "countries": [ - "SPN", - "NZG" - ] - }, - "japan": { - "name": "Japan (Captured), Manchuria 1939", - "countries": [ - "NZG", - "JPN" - ] - }, - "finnish af": { - "name": "Finland, AFB Rompotti 1943", - "countries": [ - "FIN", - "NZG" - ] - }, - "red army standard": { - "name": "1 Red Army Air Force Standard", - "countries": [ - "SUN", - "RUS" - ] - }, - "spain republicans": { - "name": "Spain (Republicans)", - "countries": [ - "SUN", - "SPN" - ] - }, - "red five demo": { - "name": "RED FIVE Aerobatic Team", - "countries": [ - "SUN", - "RUS" - ] - }, - "clear": { - "name": "Green unmarked", - "countries": "All" - }, - "silver demo": { - "name": "Silver paint scheme", - "countries": [ - "SUN", - "RUS" - ] - }, - "red army winter": { - "name": "Red Army Air Force winter", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Ishak", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "IL-76MD": { - "name": "IL-76MD", - "coalition": "red", - "label": "IL-76MD Candid", - "era": "Mid Cold War", - "shortLabel": "76", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "il-76.png", - "enabled": true, - "liveries": { - "ukrainian af aeroflot": { - "name": "Ukrainian AF aeroflot", - "countries": [ - "UKR" - ] - }, - "algerian af il-76md": { - "name": "Algerian AF IL-76MD", - "countries": [ - "DZA" - ] - }, - "china air force old": { - "name": "China Air Force Old", - "countries": [ - "CHN" - ] - }, - "ukrainian af": { - "name": "Ukrainian AF", - "countries": [ - "UKR" - ] - }, - "rf air force": { - "name": "RF Air Force", - "countries": [ - "RUS" - ] - }, - "china air force new": { - "name": "China Air Force New", - "countries": [ - "CHN" - ] - }, - "mvd aeroflot": { - "name": "MVD aeroflot", - "countries": [ - "RUS" - ] - }, - "fsb aeroflot": { - "name": "FSB aeroflot", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 5 crew. Cargo and passenger aircraft. NATO reporting name: Candid", - "abilities": "AEW", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "IL-78M": { - "name": "IL-78M", - "coalition": "red", - "label": "IL-78M Midas", - "era": "Late Cold War", - "shortLabel": "78", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Tanker" - ] - } - ], - "filename": "il-76.png", - "enabled": true, - "liveries": { - "rf air force aeroflot": { - "name": "RF Air Force aeroflot", - "countries": [ - "SUN", - "RUS" - ] - }, - "rf air force new": { - "name": "RF Air Force new", - "countries": [ - "RUS" - ] - }, - "algerian af il-78m": { - "name": "Algerian AF IL-78M", - "countries": [ - "DZA" - ] - }, - "china air force": { - "name": "China Air Force", - "countries": [ - "CHN" - ] - }, - "rf air force": { - "name": "RF Air Force", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 6 crew. Tanker aircraft. NATO reporting name: Midas", - "abilities": "Tanker, Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "J-11A": { - "name": "J-11A", - "coalition": "red", - "label": "J-11A Flaming Dragon", - "era": "Modern", - "shortLabel": "J11", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 6 - } - ], - "enabled": true, - "code": "FAB-100x36,R-73x2,ECM", - "name": "FAB-100x36,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x FAB-250", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250x8,R-73x2,ECM", - "name": "FAB-250x8,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x FAB-500", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500x8,R-73x2,ECM", - "name": "FAB-500x8,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8KOM", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-8KOMx80,FAB-250x4,R-73x2,ECM", - "name": "S-8KOMx80,FAB-250x4,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-13L - 5 S-13 OF", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-13x20,FAB-250x4,R-73x2,ECM", - "name": "S-13x20,FAB-250x4,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x S-25", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25x4,FAB-500x4,R-73x2,ECM", - "name": "S-25x4,FAB-500x4,R-73x2,ECM", - "roles": [ - "Strike", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ERx4,R-27ETx2,R-73x2,ECM", - "name": "R-27ERx4,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x6,R-73x2,ECM", - "name": "R-77x6,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ERx6,R-73x2,ECM", - "name": "R-27ERx6,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x4,R-27ETx2,R-73x2,ECM", - "name": "R-77x4,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-77x4,R-27ERx2,R-73x2,ECM", - "name": "R-77x4,R-27ERx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500ShPx6,R-73x2,ECM", - "name": "BetAB-500ShPx6,R-73x2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73x4,ECM", - "name": "R-73x4,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x2,R-27ETx2,R-73x2,ECM", - "name": "R-77x2,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-77x6,R-73x4", - "name": "R-77x6,R-73x4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", - "name": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ETx2,R-27ERx4,R-73x2,ECM", - "name": "R-27ETx2,R-27ERx4,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8TsM", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-8TsMx80,FAB-250x4,R-73x2,ECM", - "name": "S-8TsMx80,FAB-250x4,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8OFP2", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-8OFP2x80,FAB-250x4,R-73x2,ECM", - "name": "S-8OFP2x80,FAB-250x4,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "FAB-250x18,R-73x2,ECM", - "name": "FAB-250x18,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8KOM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*S8-KOMx2, R-73x2, ECM", - "name": "2*S8-KOMx2, R-73x2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8OFP2", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*S8-OFP2x2, R-73x2, ECM", - "name": "2*S8-OFP2x2, R-73x2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "2 x FAB-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250x4, 2*FAB-500x2, R-73x2", - "name": "FAB-250x4, 2*FAB-500x2, R-73x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "2 x FAB-250", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250x4, 2*FAB-250x2, R-73x2", - "name": "FAB-250x4, 2*FAB-250x2, R-73x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "RBK-250-275 - 150 x AO-1SCh, 250kg CBU HE/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", - "name": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", - "roles": [ - "CAS" - ] - } - ], - "filename": "su-27.png", - "enabled": true, - "liveries": { - "plaaf 19th ad": { - "name": "PLAAF 19th AD", - "countries": [ - "CHN" - ] - }, - "plaaf 17th ab": { - "name": "PLAAF 17th AB", - "countries": [ - "CHN" - ] - }, - "plaaf 18th ad 'thunderclap wing' (fictional)": { - "name": "PLAAF 18th AD 'Thunderclap Wing' (Fictional)", - "countries": [ - "CHN" - ] - }, - "usn aggressor vfc-13 'ferris' (fictional)": { - "name": "Aggressor VFC-13 'Ferris' (Fictional)", - "countries": [ - "AUSAF" - ] - }, - "plaaf 19th ad (reworked)": { - "name": "PLAAF 19th AD (Reworked)", - "countries": [ - "CHN" - ] - }, - "plaaf 14th ad": { - "name": "PLAAF 14th AD", - "countries": [ - "CHN" - ] - }, - "plaaf 6th ad": { - "name": "PLAAF 6th AD", - "countries": [ - "CHN" - ] - }, - "plaaf 14th ad (reworked)": { - "name": "PLAAF 14th AD (Reworked)", - "countries": [ - "CHN" - ] - }, - "plaaf opfor 'desert' (fictional)": { - "name": "PLAAF OPFOR 'Desert' (Fictional)", - "countries": [ - "CHN" - ] - }, - "plaaf 7th ad (reworked)": { - "name": "PLAAF 7th AD (Reworked)", - "countries": [ - "CHN" - ] - }, - "usaf 65th aggressor sqn 'desert' (fictional)": { - "name": "65th Aggressor SQN 'Desert' (Fictional)", - "countries": [ - "AUSAF" - ] - }, - "sky hunter": { - "name": "Sky Hunter", - "countries": [ - "CHN" - ] - }, - "plaaf 2nd ad (parade)": { - "name": "PLAAF 2nd AD (Parade)", - "countries": [ - "CHN" - ] - }, - "plaaf opfor 'jungle' (fictional)": { - "name": "PLAAF OPFOR 'Jungle' (Fictional) ", - "countries": [ - "CHN" - ] - }, - "plaaf 33th ad (reworked)": { - "name": "PLAAF 33th AD (Reworked)", - "countries": [ - "CHN" - ] - }, - "plaaf 33th ad": { - "name": "PLAAF 33th AD", - "countries": [ - "CHN" - ] - }, - "usaf 65th aggressor sqn 'gray' (fictional)": { - "name": "65th Aggressor SQN 'Gray' (Fictional)", - "countries": [ - "AUSAF" - ] - }, - "plaaf 2nd ad": { - "name": "PLAAF 2nd AD", - "countries": [ - "CHN" - ] - }, - "plaaf 7th ad": { - "name": "PLAAF 7th AD", - "countries": [ - "CHN" - ] - }, - "plaaf ghost gray (fictional)": { - "name": "PLAAF Ghost Gray (Fictional)", - "countries": [ - "CHN" - ] - }, - "plaaf 2nd ad (reworked)": { - "name": "PLAAF 2nd AD (Reworked)", - "countries": [ - "CHN" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 1 crew, fighter and strike. NATO reporting name: Flanker", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "JF-17": { - "name": "JF-17", - "coalition": "red", - "label": "JF-17 Thunder", - "era": "Modern", - "shortLabel": "J17", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "C802AK (DIS)", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C802AKx2, 800L Tank", - "name": "PL-5Ex2, C802AKx2, 800L Tank", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 800L Tank, WMD7", - "name": "PL-5Ex2, 800L Tank, WMD7", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GBU-10", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-10x2, WMD7", - "name": "PL-5Ex2, GBU-10x2, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", - "name": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 1100L Tankx2, 800L Tank", - "name": "PL-5Ex2, 1100L Tankx2, 800L Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "CM802AKG (DIS)", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", - "name": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", - "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GBU-16", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, GBU-16x2, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, GBU-16x2, WMD7", - "roles": [ - "CAS", - "Strike", - "FAC-A" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, 1100L Tankx2, WMD7", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", - "name": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LS-6-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10x2, 1100L Tankx2, SPJ", - "name": "PL-5Ex2, 2*LD-10x2, 1100L Tankx2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", - "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "LS-6-500", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10x2, LS-6x2, SPJ", - "name": "PL-5Ex2, 2*LD-10x2, LS-6x2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "GB-6-HE", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", - "name": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 1100L Tank, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 800L Tank, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 800L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 1 - }, - { - "name": "C-701T", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "LS-6-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", - "name": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 1 - }, - { - "name": "C-701T", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "GB-6-HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IR/CCD, GB-6-HEx2, 800L Tank", - "name": "PL-5Ex2, C-701 IR/CCD, GB-6-HEx2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 1 - }, - { - "name": "C-701T", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "GB-6-SFW", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IR/CCD, GB-6-SFWx2, 800L Tank", - "name": "PL-5Ex2, C-701 IR/CCD, GB-6-SFWx2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GB-6-SFW", - "quantity": 2 - }, - { - "name": "BRM-1_90MM", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, BRM1", - "name": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, BRM1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GB-6-SFW", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, GBU-12", - "name": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, GBU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 3 - }, - { - "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", - "name": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "PL-5Ex2, Mk-84x3", - "name": "PL-5Ex2, Mk-84x3", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x LAU68 MK5", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk5x2, 800L Tank", - "name": "PL-5Ex2, 2*Mk5x2, 800L Tank", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "UG_90MM", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, Unguided 90mmx2, 800L Tank", - "name": "PL-5Ex2, Unguided 90mmx2, 800L Tank", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 3 - }, - { - "name": "GDJ-II19 - 2 x LAU68 MK5", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk5x2, Mk-83x3", - "name": "PL-5Ex2, 2*Mk5x2, Mk-83x3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "BRM-1_90MM", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2x1100L Tank", - "name": "PL-5Ex2, 2x1100L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 2x1100L Tank", - "name": "PL-5Ex2, SD-10x2, 2x1100L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 800L Tank", - "name": "PL-5Ex2, 800L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 800L Tank", - "name": "PL-5Ex2, SD-10x2, 800L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 800L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 800L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, SPJ", - "name": "PL-5Ex2, SD-10x2, SPJ", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, SPJ", - "name": "PL-5Ex2, SPJ", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, SPJ", - "name": "PL-5Ex2, 2*SD-10x2, SPJ", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2", - "name": "PL-5Ex2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2", - "name": "PL-5Ex2, SD-10x2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10", - "name": "PL-5Ex2, 2*SD-10", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", - "name": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", - "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "BRM-1_90MM", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GBU-16", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", - "name": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", - "roles": [ - "FAC-A", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7", - "name": "PL-5Ex2, WMD7", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 1 - }, - { - "name": "GB-6", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", - "name": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, SPJ", - "name": "PL-5Ex2, C-701 CCDx2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 1 - }, - { - "name": "CM802AKG (DIS)", - "quantity": 2 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", - "name": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x Mk-82", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", - "name": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "LS-6-500", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GB-6", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", - "name": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LS-6-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GB-6", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "TYPE-200A Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Type-200Ax2", - "name": "PL-5Ex2, 2*Type-200Ax2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "TYPE-200A", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, Type-200Ax2", - "name": "PL-5Ex2, Type-200Ax2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "LS-6-250 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LS-6-250 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", - "name": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LS-6-100 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "LS-6-100 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", - "roles": [ - "CAS" - ] - } - ], - "filename": "jf-17.png", - "enabled": true, - "liveries": { - "paf black panthers 07-101": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers 07-101", - "countries": [ - "PAK" - ] - }, - "paf phoenixes": { - "name": "Pakistan Air Force No.28 Sqn Phoenixes", - "countries": [ - "PAK" - ] - }, - "paf black spiders 07-101 (fictional)": { - "name": "Pakistan Air Force No.26 Sqn Black Spiders 07-101 (Fictional)", - "countries": [ - "PAK" - ] - }, - "paf 07-101 (overhauled)": { - "name": "Pakistan Air Force 07-101 (Overhauled)", - "countries": [ - "PAK" - ] - }, - "paf black panthers (b2v2)": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers (Block2 Camo2)", - "countries": [ - "PAK" - ] - }, - "plaaf 125th ab (fictional)": { - "name": "PLAAF 125th AB (Fictional)", - "countries": [ - "CHN" - ] - }, - "naf 722": { - "name": "Nigerian Air Force 722", - "countries": [ - "NGA" - ] - }, - "paf dark camo": { - "name": "Pakistan Air Force Dark Camo", - "countries": [ - "PAK" - ] - }, - "'splinter' camo for blue side (fictional)": { - "name": "\"Splinter\" Camo for Blue Side (Fictional)", - "countries": "All" - }, - "paf black spiders (web camo)": { - "name": "Pakistan Air Force No.26 Sqn Black Spiders (Web Camo)", - "countries": [ - "PAK" - ] - }, - "plaaf 111th ab (fictional)": { - "name": "PLAAF 111th AB (Fictional)", - "countries": [ - "CHN" - ] - }, - "paf black panthers": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers", - "countries": [ - "PAK" - ] - }, - "paf black spiders (default)": { - "name": "Pakistan Air Force No.26 Sqn Black Spiders", - "countries": [ - "PAK" - ] - }, - "paf ccs fierce fragons": { - "name": "Pakistan Air Force CCS Sqn Fierce Dragons", - "countries": [ - "PAK" - ] - }, - "plaaf ghost gray camo (fictional)": { - "name": "PLAAF \"Ghost Gray\" Camo (Fictional)", - "countries": [ - "CHN" - ] - }, - "'chips' camo for blue side (fictional)": { - "name": "USAF \"Chips\" Camo (Fictional)", - "countries": [ - "USA" - ] - }, - "paf black panthers (reworked)": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers (Reworked)", - "countries": [ - "PAK" - ] - }, - "maf blue sea camo": { - "name": "Myanmar Air Force Blue Sea Camo", - "countries": "All" - }, - "proto 06": { - "name": "FC-1 Prototype 06", - "countries": [ - "CHN" - ] - }, - "paf minhasians": { - "name": "Pakistan Air Force No.2 Sqn Minhasians", - "countries": [ - "PAK" - ] - }, - "paf sharp shooters": { - "name": "Pakistan Air Force No.18 Sqn Sharp Shooters", - "countries": [ - "PAK" - ] - }, - "paf tail choppers": { - "name": "Pakistan Air Force No.14 Sqn Tail Choppers", - "countries": [ - "PAK" - ] - }, - "paf black panthers (b2v1)": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers (Block2 Camo1)", - "countries": [ - "PAK" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew, fighter and strike. Geoff", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "KC-135": { - "name": "KC-135", - "coalition": "blue", - "label": "KC-135 Stratotanker", - "era": "Early Cold War", - "shortLabel": "135", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Tanker" - ] - } - ], - "filename": "kc-135.png", - "enabled": true, - "liveries": { - "standard usaf": { - "name": "USAF Standard", - "countries": [ - "USA" - ] - }, - "turaf standard": { - "name": "Turkish Air Force", - "countries": [ - "TUR" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 3 crew. Tanker aircraft. Stratotanker", - "abilities": "Tanker, Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "KC135MPRS": { - "name": "KC135MPRS", - "coalition": "blue", - "label": "KC-135 MPRS Stratotanker", - "era": "Early Cold War", - "shortLabel": "135M", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Tanker" - ] - } - ], - "filename": "kc-135.png", - "enabled": true, - "liveries": { - "100th arw": { - "name": "100th ARW", - "countries": [ - "USA" - ] - }, - "22nd arw": { - "name": "22nd ARW", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 3 crew. Tanker aircraft. Stratotanker", - "abilities": "Tanker, Drogue AAR, MPRS", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "L-39ZA": { - "name": "L-39ZA", - "coalition": "red", - "label": "L-39ZA", - "era": "Mid Cold War", - "shortLabel": "L39", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2", - "name": "FAB-100x2", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel Tank 150 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2, PTB-150x2", - "name": "FAB-100x2, PTB-150x2", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel Tank 350 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2, PTB-350x2", - "name": "FAB-100x2, PTB-350x2", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "FAB-100x4", - "name": "FAB-100x4", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", - "quantity": 2 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "OFAB-100 Jupiter x4, FAB-100x2", - "name": "OFAB-100 Jupiter x4, FAB-100x2", - "roles": [ - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", - "quantity": 4 - } - ], - "enabled": true, - "code": "OFAB-100 Jupiter x8", - "name": "OFAB-100 Jupiter x8", - "roles": [ - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - }, - { - "name": "Fuel Tank 150 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "PK-3x2, PTB-150x2", - "name": "PK-3x2, PTB-150x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 4 - } - ], - "enabled": true, - "code": "PK-3x4", - "name": "PK-3x4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-3Sx2", - "name": "R-3Sx2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-3Sx2, PK-3x2", - "name": "R-3Sx2, PK-3x2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60Mx2", - "name": "R-60Mx2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60Mx2, PK-3x2", - "name": "R-60Mx2, PK-3x2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32", - "name": "S-5KOx32", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32, FAB-100x2", - "name": "S-5KOx32, FAB-100x2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel Tank 150 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32, PTB-150x2", - "name": "S-5KOx32, PTB-150x2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel Tank 350 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32, PTB-350x2", - "name": "S-5KOx32, PTB-350x2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-5KOx64", - "name": "S-5KOx64", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "SAB-100x4", - "name": "SAB-100x4", - "roles": [ - "FAC-A" - ] - } - ], - "filename": "l-39.png", - "enabled": true, - "liveries": { - "splinter camo woodland": { - "name": "Splinter camo woodland", - "countries": "All" - }, - "algerian af tiger nl-36": { - "name": "Algerian AF Tiger NL-36", - "countries": [ - "DZA" - ] - }, - "czech air force": { - "name": "Czech Air Force", - "countries": [ - "CZE" - ] - }, - "algerian af nl-44": { - "name": "Algerian AF NL-44", - "countries": [ - "DZA" - ] - }, - "splinter camo desert": { - "name": "Splinter camo desert", - "countries": "All" - }, - "slovak air force": { - "name": "2nd SQN AFB Sliac", - "countries": [ - "SVK" - ] - }, - "russian air force": { - "name": "1 Russian Air Force", - "countries": [ - "RUS" - ] - }, - "czechoslovakia air force": { - "name": "Czechoslovakia_Air Force", - "countries": [ - "CZE" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "M-2000C": { - "name": "M-2000C", - "coalition": "blue", - "label": "M-2000C Mirage", - "era": "Late Cold War", - "shortLabel": "2k", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox", - "name": "Fox", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / Magic (QRA)", - "name": "Fox / Magic (QRA)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Super 530D", - "quantity": 2 - } - ], - "enabled": true, - "code": "Alpha / S530D", - "name": "Alpha / S530D", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "Matra Super 530D", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / S530D / Magic", - "name": "Fox / S530D / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "Matra Super 530D", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - }, - { - "name": "Eclair 16 flares 16 chaffs", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / S530D / Magic / Eclair", - "name": "Fox / S530D / Magic / Eclair", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bravo", - "name": "Bravo", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bravo / Magic", - "name": "Bravo / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kilo", - "name": "Kilo", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kilo / Magic", - "name": "Kilo / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Bravo / 4xMk-82 / Magic", - "name": "Bravo / 4xMk-82 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / GBU-12 / Magic", - "name": "Bravo / GBU-12 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "AUF2 GBU-12 x 2", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / 2xGBU-12 / Magic", - "name": "Bravo / 2xGBU-12 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / GBU-16 / Magic", - "name": "Bravo / GBU-16 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "GBU-24 Paveway III - 2000lb Laser Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / GBU-24 / Magic", - "name": "Bravo / GBU-24 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "BAP-100 x 18", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / BAP-100 / Magic", - "name": "Bravo / BAP-100 / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Bravo / 4xSnakeEye / Magic", - "name": "Bravo / 4xSnakeEye / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / 4xMk-82 / Magic", - "name": "Fox / 4xMk-82 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kilo / 4xMk-82 / Magic", - "name": "Kilo / 4xMk-82 / Magic", - "roles": [ - "Strike" - ] - } - ], - "filename": "m2000.png", - "enabled": true, - "liveries": { - "ada alsace lf-2": { - "name": "Ada Alsace LF-2", - "countries": [ - "FRA" - ] - }, - "peru052": { - "name": "Fuerza Aerea Peruana 052", - "countries": [ - "FRA", - "PER" - ] - }, - "mission accomplie": { - "name": "2022 MISSION ACCOMPLIE by MALBAK", - "countries": "All" - }, - "cambresis": { - "name": "AdA Cambresis", - "countries": [ - "FRA" - ] - }, - "greek air force": { - "name": "Polemikh Aeroporia (Greek Air Force)", - "countries": [ - "FRA", - "GRC" - ] - }, - "brasilian air force": { - "name": "Forca Aerea Brasileira (Brazilian Air Force)", - "countries": [ - "BRA", - "FRA" - ] - }, - "2003 tigermeet": { - "name": "NATO Tigermeet 2003", - "countries": [ - "FRA" - ] - }, - "peru064": { - "name": "Fuerza Aerea Peruana 064", - "countries": [ - "FRA", - "PER" - ] - }, - "2010 tigermeet": { - "name": "NATO Tigermeet 2010", - "countries": [ - "FRA" - ] - }, - "uae air force": { - "name": "UAE Air Defense Air Force", - "countries": [ - "FRA", - "ARE" - ] - }, - "2004 tigermeet": { - "name": "NATO Tigermeet 2004", - "countries": [ - "FRA" - ] - }, - "ada chasse 2-5": { - "name": "AdA Chasse 2/5", - "countries": [ - "FRA" - ] - }, - "iaf silver 59": { - "name": "Israeli Air Force 101 Sqn 1967 scheme", - "countries": [ - "ABH", - "RUS", - "SPN", - "ISR", - "USA", - "RSO", - "UKR", - "TUR", - "BEL", - "NOR", - "ITA", - "POL", - "NETH", - "GER", - "FRA", - "GRG", - "DEN", - "CZE", - "CAN", - "UK" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew, fighter and strike.", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MB-339A": { - "name": "MB-339A", - "coalition": "blue", - "label": "MB-339A", - "era": "Mid Cold War", - "shortLabel": "339", - "loadouts": [ - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "", - "quantity": 6 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks [Clean]", - "name": "A - 2*320L TipTanks [Clean]", - "roles": [ - "Transport" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "", - "quantity": 3 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", - "name": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", - "roles": [ - "Transport" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 HEI Heavy", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", - "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", - "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Mk-81 - 250lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.83 + 2*Mk.81 ", - "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.83 + 2*Mk.81 ", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 6*Mk.82LD", - "name": "A - 2*320L TipTanks + 6*Mk.82LD", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "", - "quantity": 3 - }, - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "Luggage Container", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", - "name": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", - "roles": [ - "No task", - "Transport" - ] - }, - { - "items": [ - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "Matra Type 155 Rocket Pod", - "quantity": 2 - }, - { - "name": "BLG-66-AC Belouga", - "quantity": 2 - }, - { - "name": "AN/M3 Gunpod Right", - "quantity": 1 - }, - { - "name": "AN/M3 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", - "name": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", - "name": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", - "roles": [] - }, - { - "items": [ - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", - "name": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "AA - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*LAU-10(Zuni Rockets) [ARMADA]", - "name": "AA - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*LAU-10(Zuni Rockets) [ARMADA]", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "AN/M3 Gunpod Right", - "quantity": 1 - }, - { - "name": "AN/M3 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "AM - 2*320L TipTanks + 2*AN/M3 GunPods + 2*330L Tanks + 2*LAU-3 (Hydra rockets)", - "name": "AM - 2*320L TipTanks + 2*AN/M3 GunPods + 2*330L Tanks + 2*LAU-3 (Hydra rockets)", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "14-3-M2 - 6 x BAT-120 ABL - 34kg HE/Frag Chute Retarded Bomb HD", - "quantity": 6 - } - ], - "enabled": true, - "code": "Anti - Light Armoured Vehicle (36*BAT-120 ABL)", - "name": "Anti - Light Armoured Vehicle (36*BAT-120 ABL)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Matra Type 155 Rocket Pod", - "quantity": 2 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "AP - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*330L Tanks + 2*Matra 155 (SNEB rockets)", - "name": "AP - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*330L Tanks + 2*Matra 155 (SNEB rockets)", - "roles": [ - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "AN/M3 Gunpod Right", - "quantity": 1 - }, - { - "name": "Photo-Recon Pod (4*70mm Vinten Cameras)", - "quantity": 1 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "", - "quantity": 2 - } - ], - "enabled": true, - "code": "Recon", - "name": "Recon", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 4 - }, - { - "name": "Matra Type 155 Rocket Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "Runway Interdiction", - "name": "Runway Interdiction", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "14-3-M2 - 6 x BAP-100 - 32kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 6 - } - ], - "enabled": true, - "code": "Runway Interdiction (36*BAP-100)", - "name": "Runway Interdiction (36*BAP-100)", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "BRD-4-250 - 4 x Mk 76 - 25lb Practice Bomb LD", - "quantity": 1 - }, - { - "name": "", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "Training", - "name": "Training", - "roles": [] - } - ], - "filename": "mb-339.png", - "enabled": true, - "liveries": { - "mb339an 'nigeria'": { - "name": "Nigerian Air Force | Camo (Low-Vis)", - "countries": [ - "NGA" - ] - }, - "mb339a italian camo - late": { - "name": "Italian Camo - Late", - "countries": [ - "ITA" - ] - }, - "mb339a italian factory": { - "name": "Italian Orange/White", - "countries": [ - "ITA" - ] - }, - "mb339am 'malaysia'": { - "name": "Royal Malaysian Air Force | Camo (Low-Vis)", - "countries": [ - "MYS" - ] - }, - "mb339aa 'armada' - yellow band": { - "name": "ARMADA Argentina | Camo (Yellow Band)", - "countries": [ - "ARG" - ] - }, - "mb339ag 'ghana'": { - "name": "Ghana Air Force | Camo (Low-Vis)", - "countries": [ - "GHA" - ] - }, - "mb339a italian gray": { - "name": "Italian Gray", - "countries": [ - "ITA" - ] - }, - "mb339a italian camo - early": { - "name": "Italian Camo - Early", - "countries": [ - "ITA" - ] - }, - "mb339 'factory'": { - "name": "Aermacchi Factory Scheme | S-001 I-NEUF", - "countries": "All" - }, - "mb339ad 'uae'": { - "name": "UAE Air Force", - "countries": [ - "ARE" - ] - }, - "mb339aa 'armada' - crippa": { - "name": "ARMADA Argentina | Camo (Lt. Crippa's killmark)", - "countries": [ - "ARG" - ] - }, - "mb339ap 'peru'": { - "name": "Peruvian Air Force | Camo (Late)", - "countries": [ - "PER" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MQ-9 Reaper": { - "name": "MQ-9 Reaper", - "coalition": "blue", - "label": "MQ-9 Reaper", - "era": "Modern", - "shortLabel": "MQ9", - "loadouts": [ - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "AGM-114K * 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-114K*12", - "name": "AGM-114K*12", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-114K*8,GBU-38*2", - "name": "AGM-114K*8,GBU-38*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4", - "name": "GBU-12*4", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-38*4", - "name": "GBU-38*4", - "roles": [ - "CAS", - "Strike" - ] - } - ], - "filename": "rq-1.png", - "enabled": true, - "liveries": { - "standard": { - "name": "standard", - "countries": [ - "USA" - ] - }, - "standard uk": { - "name": "standard UK", - "countries": [ - "UK" - ] - }, - "standard italy": { - "name": "standard Italy", - "countries": [ - "ITA" - ] - }, - "standard france": { - "name": "standard France", - "countries": [ - "FRA" - ] - }, - "'camo' scheme": { - "name": "'camo' scheme", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "Single turboprop, straight wing, attack aircraft. Reaper", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-15bis": { - "name": "MiG-15bis", - "coalition": "red", - "label": "MiG-15 Fagot", - "era": "Early Cold War", - "shortLabel": "M15", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-50 - 50kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*FAB-50", - "name": "2*FAB-50", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*FAB-100M", - "name": "2*FAB-100M", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 300 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*300L", - "name": "2*300L", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 400 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*400L", - "name": "2*400L", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 600 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*600L", - "name": "2*600L", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 300 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel tank 300", - "name": "Fuel tank 300", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 400 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel tank 400", - "name": "Fuel tank 400", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - } - ], - "filename": "mig-15.png", - "enabled": true, - "liveries": { - "china_air force": { - "name": "People's Liberation Army Air Force", - "countries": [ - "CHN" - ] - }, - "china volunteer air force": { - "name": "People's Volunteer Army Air Force", - "countries": [ - "CHN" - ] - }, - "ussr_red": { - "name": "USSR Red", - "countries": [ - "SUN", - "RUS" - ] - }, - "algerian af 1962": { - "name": "Algerian AF 1962", - "countries": [ - "DZA" - ] - }, - "north_korea_air force_major_ arkady_ boitsow": { - "name": "North Korea - Major Arkady Boitsow", - "countries": [ - "RUS", - "PRK" - ] - }, - "gdr_air force": { - "name": "Air Forces of the National People's Army", - "countries": [ - "GER" - ] - }, - "default livery": { - "name": "default livery", - "countries": [ - "BRA", - "CUB", - "MYS", - "ARE", - "AUS", - "ABH", - "RUS", - "PHL", - "SPN", - "ISR", - "SUN", - "USA", - "BHR", - "MAR", - "BLR", - "HRV", - "DZA", - "OMN", - "RSO", - "SVK", - "HND", - "IRN", - "UKR", - "TUR", - "JPN", - "PRK", - "SRB", - "IDN", - "KAZ", - "BGR", - "BEL", - "INS", - "THA", - "LBY", - "AUSAF", - "VEN", - "PAK", - "JOR", - "RSA", - "FIN", - "MEX", - "KWT", - "NOR", - "IRQ", - "SYR", - "ITA", - "NZG", - "GRC", - "POL", - "NETH", - "GER", - "SUI", - "CHN", - "SAU", - "SWE", - "YEM", - "VNM", - "ROU", - "RSI", - "FRA", - "CHL", - "KOR", - "HUN", - "AUT", - "GRG", - "DEN", - "TUN", - "EGY", - "IND", - "CZE", - "ETH", - "CAN", - "SDN", - "QAT", - "UK", - "YUG" - ] - }, - "haf fictional": { - "name": "Hellenic Airforce - Fictional", - "countries": [ - "GRC" - ] - }, - "ussr_air forces": { - "name": "Air Forces of Soviet Union", - "countries": [ - "SUN", - "RUS" - ] - }, - "north_korea_air force": { - "name": "Korean People's Air Force", - "countries": [ - "PRK" - ] - }, - "polish_air force": { - "name": "Polish Air Force", - "countries": [ - "POL" - ] - }, - "ussr_air forces old": { - "name": "USSR Old", - "countries": [ - "SUN", - "RUS" - ] - }, - "czechoslovakia_air force": { - "name": "Czechoslovak Air Force", - "countries": [ - "CZE" - ] - }, - "ussr_pepelyaev": { - "name": "USSR Pepelyaev", - "countries": [ - "SUN", - "RUS", - "PRK" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew. Fagot", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-19P": { - "name": "MiG-19P", - "coalition": "red", - "label": "MiG-19 Farmer", - "era": "Early Cold War", - "shortLabel": "M19", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 760 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "PTB-760 x 2", - "name": "PTB-760 x 2", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "K-13A", - "quantity": 2 - }, - { - "name": "Fuel Tank 760 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "K-13A x 2, PTB-760 x 2", - "name": "K-13A x 2, PTB-760 x 2", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "K-13A", - "quantity": 2 - } - ], - "enabled": true, - "code": "K-13A x 2", - "name": "K-13A x 2", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "K-13A", - "quantity": 2 - }, - { - "name": "Fuel Tank 760 liters", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "K-13A x 2, ORO-57K x 2, PTB-760 x 2", - "name": "K-13A x 2, ORO-57K x 2, PTB-760 x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 760 liters", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "ORO-57K x 2, PTB-760 x 2", - "name": "ORO-57K x 2, PTB-760 x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ORO-57K - S-5M x 8", - "quantity": 4 - } - ], - "enabled": true, - "code": "ORO-57K x 4", - "name": "ORO-57K x 4", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "ORO-57K x 2", - "name": "ORO-57K x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100M x 2, ORO-57K x 2", - "name": "FAB-100M x 2, ORO-57K x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250 x 2, ORO-57K x 2", - "name": "FAB-250 x 2, ORO-57K x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100M x 2", - "name": "FAB-100M x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250 x 2", - "name": "FAB-250 x 2", - "roles": [ - "CAS", - "Strike" - ] - } - ], - "filename": "mig-19.png", - "enabled": true, - "liveries": { - "ussr_2": { - "name": "764th Fighter Aviation Regiment", - "countries": [ - "SUN", - "RUS" - ] - }, - "plaaf camo": { - "name": "PLAAF Snow Camo", - "countries": [ - "CHN" - ] - }, - "cuba": { - "name": " 211 Escuadron de Caza", - "countries": [ - "CUB" - ] - }, - "iap": { - "name": "234 Fighter Regiment (234 IAP)", - "countries": "All" - }, - "ddr - fictional": { - "name": "Germany DDR camouflage (Fictional)", - "countries": "All" - }, - "snow - fictional": { - "name": "Snow Camouflage Fictional", - "countries": "All" - }, - "plaaf": { - "name": "112th Air Regiment", - "countries": [ - "CHN" - ] - }, - "romania - 66th fighter division": { - "name": "91st Fighter Regiment", - "countries": [ - "ROU" - ] - }, - "poland 39 plm": { - "name": "39 PLM Squadron", - "countries": [ - "POL" - ] - }, - "poland 62 plm": { - "name": "62 PLM Squadron", - "countries": [ - "POL" - ] - }, - "default": { - "name": "default", - "countries": "All" - }, - "czechoslovakia": { - "name": "2nd Fighter-Bomber Regiment", - "countries": [ - "CZE" - ] - }, - "bulgaria": { - "name": "1st Squadron, 18th Fighter Regiment", - "countries": [ - "BGR" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew. Farmer", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-21Bis": { - "name": "MiG-21Bis", - "coalition": "red", - "label": "MiG-21 Fishbed", - "era": "Mid Cold War", - "shortLabel": "M21", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Patrol, long range", - "name": "Patrol, long range", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-60 x 2", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Patrol, medium range", - "name": "Patrol, medium range", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-60 x 2", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Patrol, short range", - "name": "Patrol, short range", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Hard targets, BOMBS", - "name": "Hard targets, BOMBS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "UB-32M - 32 S-5M", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "Unknown or mixed targets, BOMBS + ROCKETS", - "name": "Unknown or mixed targets, BOMBS + ROCKETS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "UB-32M - 32 S-5M", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, CLUSTERS + ROCKETS", - "name": "Soft targets, CLUSTERS + ROCKETS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "BL-755 CBU - 450kg, 147 Frag/Pen bomblets", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, CLUSTERS", - "name": "Soft targets, CLUSTERS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "UPK-23-250 - gun pod", - "quantity": 2 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, scattered", - "name": "Soft targets, scattered", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Kh-66 Grom (21) - AGM, radar guided APU-68", - "quantity": 2 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Few big targets, GROM + BOMBS", - "name": "Few big targets, GROM + BOMBS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "Very hard target, PENETRATION", - "name": "Very hard target, PENETRATION", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Aerial attack, hard targets, CLUSTERS", - "name": "Aerial attack, hard targets, CLUSTERS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "S-24A (21) - 180 kg, cumulative unguided rocket", - "quantity": 4 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Hard targets, ROCKETS, PENETRATION", - "name": "Hard targets, ROCKETS, PENETRATION", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "S-24B (21) - 180 kg, fragmented unguided rocket", - "quantity": 4 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Soft targets, ROCKETS, BLAST-FRAGMENTS", - "name": "Soft targets, ROCKETS, BLAST-FRAGMENTS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, MIX", - "name": "Long range, MIX", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, RADAR GUIDED MISSILES", - "name": "Long range, RADAR GUIDED MISSILES", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, INFRA RED MISSILES", - "name": "Long range, INFRA RED MISSILES", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Escort", - "name": "Escort", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Escort, JAMMER", - "name": "Escort, JAMMER", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "Night, ILLUMINATOR", - "name": "Night, ILLUMINATOR", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, JAMMER", - "name": "Long range, JAMMER", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "UPK-23-250 - gun pod", - "quantity": 2 - }, - { - "name": "UB-16UM - 16 S-5M", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, UPK + ROCKETS", - "name": "Soft targets, UPK + ROCKETS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "UPK-23-250 - gun pod", - "quantity": 2 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Soft targets, UPK + CLUSTERS", - "name": "Soft targets, UPK + CLUSTERS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Patrol, JAMMER", - "name": "Patrol, JAMMER", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "RN-24 - 470kg, nuclear bomb, free fall", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - } - ], - "enabled": true, - "code": "NUCLEAR A", - "name": "NUCLEAR A", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RN-28 - 260 kg, nuclear bomb, free fall", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - } - ], - "enabled": true, - "code": "NUCLEAR B", - "name": "NUCLEAR B", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Short range", - "name": "Short range", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Smoke - white - 21", - "quantity": 1 - } - ], - "enabled": true, - "code": "AEROBATIC", - "name": "AEROBATIC", - "roles": [] - } - ], - "filename": "mig-21.png", - "enabled": true, - "liveries": { - "afghanistan (1)": { - "name": "Afghanistan (1)", - "countries": "All" - }, - "bulgaria - 1-3 iae (3)": { - "name": "Bulgaria - 1/3 IAE (3)", - "countries": "All" - }, - "germany east - jg-8": { - "name": "East Germany - JG-8", - "countries": "All" - }, - "plaaf - white": { - "name": "PLAAF - White", - "countries": "All" - }, - "croatia - 21st fs": { - "name": "Croatia - 21st Fighter Squadron (Zagreb AB)", - "countries": "All" - }, - "plaaf - sky blue": { - "name": "PLAAF - Sky Blue", - "countries": "All" - }, - "iraq - 17th sqn (2)": { - "name": "Iraq - 17th Sqn (2)", - "countries": "All" - }, - "vvs - amt-11 grey": { - "name": "VVS - AMT-11 Grey", - "countries": "All" - }, - "vvs - 234 gviap": { - "name": "VVS - 234 GvIAP", - "countries": "All" - }, - "bare metal": { - "name": "Bare Metal", - "countries": "All" - }, - "bulgaria - 1-3 iae (2)": { - "name": "Bulgaria - 1/3 IAE (2)", - "countries": "All" - }, - "plaaf - splinter": { - "name": "PLAAF - Splinter", - "countries": "All" - }, - "argentina (2)": { - "name": "Argentina (2)", - "countries": "All" - }, - "vvs - demonstrator": { - "name": "VVS Demonstrator", - "countries": "All" - }, - "vvs - 115 gviap": { - "name": "VVS - 115 GvIAP (Kokaydy AB)", - "countries": "All" - }, - "romania - lancer a": { - "name": "Romania - Lancer A", - "countries": "All" - }, - "sweden - 16th air wing": { - "name": "Sweden - 16th Air Wing", - "countries": "All" - }, - "syria (1)": { - "name": "Syria (1)", - "countries": "All" - }, - "egypt - grey 1982": { - "name": "Egypt - Grey 1982", - "countries": "All" - }, - "finland - hävllv 31": { - "name": "Finland - HavLLv 31", - "countries": "All" - }, - "huaf 47th ab - 6115 (griff sqn)": { - "name": "HunAF Griff Sqn. (47th AB) 6115", - "countries": "All" - }, - "libya - 2017": { - "name": "Lybia - 2017", - "countries": "All" - }, - "huaf 47th ab (griff sqn)": { - "name": "HunAF Griff Sqn. (47th AB)", - "countries": "All" - }, - "cuba - 1990s": { - "name": "Cuba - 1990s", - "countries": "All" - }, - "serbia - 101st lae": { - "name": "Serbia - 101st LAE", - "countries": "All" - }, - "slovakia - 1998": { - "name": "Slovakia - 1998", - "countries": "All" - }, - "iran - 51st sqn": { - "name": "Iran - 51st Sqn (Umidiyeh AB)", - "countries": "All" - }, - "vvs - 116 cbp": { - "name": "VVS - 116 CBP", - "countries": "All" - }, - "georgia (2)": { - "name": "Georgia (2)", - "countries": "All" - }, - "huaf metal": { - "name": "HuAF Metal", - "countries": "All" - }, - "bulgaria - 1-3 iae": { - "name": "Bulgaria - 1/3 IAE", - "countries": "All" - }, - "india - 101st sqn (1)": { - "name": "India - 101st Sqn Falcons", - "countries": "All" - }, - "ukraine (2)": { - "name": "Ukraine 02", - "countries": "All" - }, - "vpaf - 927th fighter regiment metal": { - "name": "VPAF - 927th Fighter Regiment Metal", - "countries": "All" - }, - "iran - standard": { - "name": "Iran - Standard", - "countries": "All" - }, - "romania - lancer c": { - "name": "Romania - Lancer C", - "countries": "All" - }, - "angola - c41": { - "name": "Angola - C41", - "countries": "All" - }, - "poland - 1 dlmw": { - "name": "Poland - 1 DLMW", - "countries": "All" - }, - "yugoslavia - gray": { - "name": "Yugoslavia - Grey", - "countries": "All" - }, - "angola - c314": { - "name": "Angola - C314", - "countries": "All" - }, - "argentina (1)": { - "name": "Argentina (1)", - "countries": "All" - }, - "romania - gray": { - "name": "Romania - Gray", - "countries": "All" - }, - "dprk - 2016 - 42": { - "name": "DPRK - 2016 Nr.42", - "countries": "All" - }, - "libya - early": { - "name": "Lybia - Early", - "countries": "All" - }, - "poland - metal": { - "name": "Poland - Lacquer Metal", - "countries": "All" - }, - "syria (2)": { - "name": "Syria (2)", - "countries": "All" - }, - "india - 15th sqn": { - "name": "India - 15 Sqn War Games", - "countries": "All" - }, - "cuba - um 5010 is": { - "name": "Cuba - UM 5010 IS", - "countries": "All" - }, - "afghanistan (2)": { - "name": "Afghanistan (2)", - "countries": "All" - }, - "iraq - 9th sqn": { - "name": "Iraq - 9th Sqn", - "countries": "All" - }, - "vpaf - 927th lam son - 6122": { - "name": "VPAF - 927th Lam Son", - "countries": "All" - }, - "yugoslavia - camo": { - "name": "Yugoslavia - Camo", - "countries": "All" - }, - "egypt - tan 1982": { - "name": "Egypt - Tan 1982", - "countries": "All" - }, - "croatia - 1st fs 1992": { - "name": "Croatia - 1st FS 1992", - "countries": "All" - }, - "southeria": { - "name": "Southeria", - "countries": "All" - }, - "ukraine (1)": { - "name": "Ukraine 01", - "countries": "All" - }, - "georgia (1)": { - "name": "Georgia (1)", - "countries": "All" - }, - "northeria - 32nd fs": { - "name": "Northeria - 32nd FG", - "countries": "All" - }, - "cuba - metal": { - "name": "Cuba - Metal", - "countries": "All" - }, - "huaf 47th ab - early": { - "name": "HunAF Griff Sqn. (47th AB) - Early ", - "countries": "All" - }, - "jasdf": { - "name": "JASDF", - "countries": "All" - }, - "raf - 111th sqn": { - "name": "RAF - 111th Sqn", - "countries": "All" - }, - "sweden - m90": { - "name": "Sweden - M90", - "countries": "All" - }, - "algeria": { - "name": "Algeria FD-43", - "countries": "All" - }, - "india - 101st sqn (2)": { - "name": "India - 101st Sqn Falcons (2)", - "countries": "All" - }, - "draken international": { - "name": "Draken International", - "countries": "All" - }, - "raf - 11th sqn": { - "name": "RAF - 11th Sqn", - "countries": "All" - }, - "vpaf - 921st sao do - 5040": { - "name": "VPAF - 921st Sao Do", - "countries": "All" - }, - "vvs - metal": { - "name": "VVS Metal", - "countries": "All" - }, - "iraq - 17th sqn (1)": { - "name": "Iraq - 17th Sqn (1)", - "countries": "All" - }, - "vvs - 185th gviap": { - "name": "VVS 185th GvIAP", - "countries": "All" - }, - "poland - 10 elt": { - "name": "Poland - 10 ELT", - "countries": "All" - }, - "dprk - 2014 - 34": { - "name": "DPRK - 2014 Nr.34", - "countries": "All" - }, - "huaf grey": { - "name": "HuAF Grey", - "countries": "All" - }, - "huaf 31st ab (turul sqn)": { - "name": "HunAF 1904 Capeti (51th AB)", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew. Fishbed", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-23MLD": { - "name": "MiG-23MLD", - "coalition": "red", - "label": "MiG-23 Flogger", - "era": "Mid Cold War", - "shortLabel": "23", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*4", - "name": "R-60M*4", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*2,R-60M*2,Fuel-800", - "name": "B-8*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-32*2,R-60M*2,Fuel-800", - "name": "UB-32*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-24R*2,R-60M*4,Fuel-800", - "name": "R-24R*2,R-60M*4,Fuel-800", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-24T (AA-7 Apex IR) - Infra Red", - "quantity": 1 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - }, - { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-24R,R-24T,R-60M*4,Fuel-800", - "name": "R-24R,R-24T,R-60M*4,Fuel-800", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*4,Fuel-800", - "name": "R-60M*4,Fuel-800", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*2,R-60M*2,Fuel-800", - "name": "FAB-500*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-24R*2,R-60M*4", - "name": "R-24R*2,R-60M*4", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*2,R-60M*2,Fuel-800", - "name": "FAB-250*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*2,R-60M*2,Fuel-800", - "name": "RBK-250*2,R-60M*2,Fuel-800", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500*2,R-60M*2,Fuel-800", - "name": "RBK-500*2,R-60M*2,Fuel-800", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-24T (AA-7 Apex IR) - Infra Red", - "quantity": 1 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-24R,R-24T,R-60M*4", - "name": "R-24R,R-24T,R-60M*4", - "roles": [ - "CAP" - ] - } - ], - "filename": "mig-23.png", - "enabled": true, - "liveries": { - "af standard-2": { - "name": "af standard-2", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard-3 (worn-out)": { - "name": "af standard-3 (worn-out)", - "countries": [ - "SUN", - "RUS" - ] - }, - "algerian air force": { - "name": "Algerian Air Force", - "countries": [ - "DZA" - ] - }, - "af standard-1": { - "name": "af standard-1", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swing wing, 1 crew. Flogger", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-25PD": { - "name": "MiG-25PD", - "coalition": "red", - "label": "MiG-25PD Foxbat", - "era": "Mid Cold War", - "shortLabel": "25P", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40TD (AA-6 Acrid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-40R*2,R-40T*2", - "name": "R-40R*2,R-40T*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-40R*4", - "name": "R-40R*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-40R*2,R-60M*2", - "name": "R-40R*2,R-60M*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - } - ], - "filename": "mig-25.png", - "enabled": true, - "liveries": { - "algerian air force": { - "name": "Algeria Air Force standard", - "countries": [ - "DZA" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Foxbat", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-25RBT": { - "name": "MiG-25RBT", - "coalition": "red", - "label": "MiG-25RBT Foxbat", - "era": "Mid Cold War", - "shortLabel": "25R", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500x2_60x2", - "name": "FAB-500x2_60x2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*2", - "name": "R-60M*2", - "roles": [ - "Reconnaissance" - ] - } - ], - "filename": "mig-25.png", - "enabled": true, - "liveries": { - "algerian air force": { - "name": "Algeria Air Force standard", - "countries": [ - "DZA" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Foxbat", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-27K": { - "name": "MiG-27K", - "coalition": "red", - "label": "MiG-27K Flogger-D", - "era": "Mid Cold War", - "shortLabel": "M27", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*6,R-60M*2,Fuel", - "name": "FAB-250*6,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500ShP*2,FAB-250*2,R-60*2", - "name": "BetAB-500ShP*2,FAB-250*2,R-60*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-25MR*2,R-60M*2,Fuel", - "name": "Kh-25MR*2,R-60M*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2,Fuel", - "name": "Kh-29L*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "B-8*4", - "name": "B-8*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*2,FAB-500*2,R-60*2", - "name": "BetAB-500*2,FAB-500*2,R-60*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-25MPU*2,R-60M*2,Fuel", - "name": "Kh-25MPU*2,R-60M*2,Fuel", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-60M*2,Fuel", - "name": "Kh-29T*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", - "name": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-25ML*2,R-60M*2,Fuel", - "name": "Kh-25ML*2,R-60M*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*2,R-60M*2,Fuel", - "name": "KAB-500*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*2,RBK-250*2,R-60M*2", - "name": "RBK-500AO*2,RBK-250*2,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-32*4", - "name": "UB-32*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60*2,Fuel", - "name": "Kh-29L*2,R-60*2,Fuel", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "mig-23.png", - "enabled": true, - "liveries": { - "algerian air force": { - "name": "Algerian Air Force", - "countries": [ - "DZA" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swing wing, 1 crew. Flogger", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-29A": { - "name": "MiG-29A", - "coalition": "red", - "label": "MiG-29A Fulcrum", - "era": "Late Cold War", - "shortLabel": "M29", - "loadouts": [ - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*4,R-73*2,Fuel", - "name": "B-8*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*4,R-73*2,Fuel", - "name": "BetAB-500*4,R-73*2,Fuel", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,R-73*2,Fuel", - "name": "FAB-250*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*4,R-73*2,Fuel", - "name": "FAB-500*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 1150L MiG-29", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel-1150*2,Fuel-1500", - "name": "Fuel-1150*2,Fuel-1500", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2", - "name": "R-60M*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2,Fuel-1500", - "name": "R-60M*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-60M*6", - "name": "R-60M*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*6,Fuel-1500", - "name": "R-60M*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2", - "name": "R-73*2,R-60M*2,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "name": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2", - "name": "R-73*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2,Fuel-1500", - "name": "R-73*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*6", - "name": "R-73*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*6,Fuel-1500", - "name": "R-73*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*4,R-73*2,Fuel", - "name": "RBK-250*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*4,R-73*2,Fuel", - "name": "RBK-500AO*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*2,FAB-500*2,R-73*2,Fuel", - "name": "S-24*2,FAB-500*2,R-73*2,Fuel", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*4,R-73*2,Fuel", - "name": "S-24*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - } - ], - "filename": "mig-29.png", - "enabled": true, - "liveries": { - "air force ukraine standard": { - "name": "Air Force (Standard)", - "countries": [ - "UKR" - ] - }, - "air force standard": { - "name": "Air Force (Standard)", - "countries": [ - "SUN", - "RUS" - ] - }, - "strizhi": { - "name": "Strizhi 1992", - "countries": [ - "RUS" - ] - }, - "domna 120th ar": { - "name": "Domna - 120th Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "mary-1 agressors": { - "name": "Soviet Air Forces, a/b 1521 (Mary-1)", - "countries": [ - "RUS" - ] - }, - "polish 41st sqn standard1": { - "name": "41st Sqn Standard 1", - "countries": [ - "POL" - ] - }, - "iriaf sand-blue": { - "name": "IRIAF sand-blue", - "countries": [ - "IRN" - ] - }, - "strizhi (w)": { - "name": "Strizhi 1992(W)", - "countries": [ - "RUS" - ] - }, - "polish 41st sqn standard2": { - "name": "41st Sqn Standard 2", - "countries": [ - "POL" - ] - }, - "vasylkiv 40th brta": { - "name": "Vasylkiv - 40th Brigade of Tactical Aviation", - "countries": [ - "UKR" - ] - }, - "kazakhstan air defense forces": { - "name": "KazAADF 600th Airbase 2015", - "countries": [ - "KAZ" - ] - }, - "kazakhstan kazaadf 2008": { - "name": "KazAADF 600th Airbase 2008", - "countries": [ - "KAZ" - ] - }, - "iriaf blue-grey": { - "name": "IRIAF blue-grey", - "countries": [ - "IRN" - ] - }, - "syaaf": { - "name": "Syrian Arab Air Force", - "countries": [ - "SYR" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-29S": { - "name": "MiG-29S", - "coalition": "red", - "label": "MiG-29S Fulcrum", - "era": "Late Cold War", - "shortLabel": "M29", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2", - "name": "R-73*2,R-60M*2,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2,Fuel-1500", - "name": "R-73*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*6,Fuel-1500", - "name": "R-73*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*6,Fuel-1500", - "name": "R-60M*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*4,R-73*2,Fuel", - "name": "S-24*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*4,R-73*2,Fuel", - "name": "FAB-500*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*4,R-73*2,Fuel", - "name": "BetAB-500*4,R-73*2,Fuel", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*4,R-73*2,Fuel", - "name": "RBK-500AO*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "name": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1150L MiG-29", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77*2,R-73*2,Fuel-1500,Fuel-1150*2", - "name": "R-77*2,R-73*2,Fuel-1500,Fuel-1150*2", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*4,R-73*2,Fuel", - "name": "B-8*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*4,R-73*2,Fuel", - "name": "RBK-250*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*6", - "name": "R-73*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel tank 1150L MiG-29", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel-1150*2,Fuel-1500", - "name": "Fuel-1150*2,Fuel-1500", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-60M*6", - "name": "R-60M*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2", - "name": "R-60M*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2", - "name": "R-73*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-77*4,R-73*2", - "name": "R-77*4,R-73*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,R-73*2,Fuel", - "name": "FAB-250*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2,Fuel-1500", - "name": "R-60M*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77*4,R-73*2,Fuel-1500", - "name": "R-77*4,R-73*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*2,FAB-500*2,R-73*2,Fuel", - "name": "S-24*2,FAB-500*2,R-73*2,Fuel", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "mig-29.png", - "enabled": true, - "liveries": { - "algerian af fc-16": { - "name": "Algerian AF FC-16", - "countries": [ - "DZA" - ] - }, - "air force ukraine standard": { - "name": "Air Force (Standard)", - "countries": [ - "UKR" - ] - }, - "air force standard": { - "name": "Air Force (Standard)", - "countries": [ - "RUS" - ] - }, - "kazaadf new faded (fictional)": { - "name": "KazAADF new faded (fictional)", - "countries": [ - "KAZ" - ] - }, - "strizhi": { - "name": "Strizhi 2003", - "countries": [ - "RUS" - ] - }, - "115 gviap_termez": { - "name": "Termez AFB, 115th Guards Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "1521th air base_mary-1": { - "name": "Mary-1 AFB, 1521st Air Force Base", - "countries": [ - "RUS" - ] - }, - "kazaadf old (fictional)": { - "name": "KazAADF old (fictional)", - "countries": [ - "KAZ" - ] - }, - "swifts": { - "name": "Swifts (Aerobatic team)", - "countries": [ - "RUS" - ] - }, - "773 iap_damgarten": { - "name": "Damgarten AFB, 773rd Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "426th air group_erebuni": { - "name": "Erebuni AFB, 426th Air Group", - "countries": [ - "RUS" - ] - }, - "31 gviap_zernograd": { - "name": "Zernograd AFB, 31st Guards Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "28 gviap_andreapol": { - "name": "Andreapol AFB, 28th Guards Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "belarusian air force": { - "name": "Belarusian Air Force 61 FAB Baranavichy (2017)", - "countries": [ - "BLR" - ] - }, - "kazaadf new (fictional)": { - "name": "KazAADF new (fictional)", - "countries": [ - "KAZ" - ] - }, - "falcons of russia": { - "name": "Lipetsk, aerobatic group Falcons of Russia", - "countries": [ - "RUS" - ] - }, - "kazaadf new (fictional digital)": { - "name": "KazAADF new digital (fictional digital)", - "countries": [ - "KAZ" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-31": { - "name": "MiG-31", - "coalition": "red", - "label": "MiG-31 Foxhound", - "era": "Late Cold War", - "shortLabel": "M31", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40TD (AA-6 Acrid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-40T*2,R-33*4", - "name": "R-40T*2,R-33*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 1 - }, - { - "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", - "quantity": 4 - }, - { - "name": "R-40TD (AA-6 Acrid) - Infra Red", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-40T,R-33*4,R-40R", - "name": "R-40T,R-33*4,R-40R", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-40R*2,R-33*4", - "name": "R-40R*2,R-33*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-60M*4,R-33*4", - "name": "R-60M*4,R-33*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - } - ], - "filename": "mig-23.png", - "enabled": true, - "liveries": { - "174 gviap_boris safonov": { - "name": "174 GvIAP Boris Safonov", - "countries": [ - "RUS" - ] - }, - "903_white": { - "name": "Demo 903 White", - "countries": [ - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 2 crew. Foxhound", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Mirage-F1EE": { - "name": "Mirage-F1EE", - "coalition": "blue", - "label": "Mirage-F1EE", - "era": "Mid Cold War", - "shortLabel": "MF1", - "loadouts": [ - { - "items": [ - { - "name": "AIM-9J Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Chute Retarded Bomb HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", - "name": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9J Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 LD", - "name": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 LD", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 4 - }, - { - "name": "CLB 4 - 4 x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9JULI, 8*BLU107 Durandal", - "name": "2*AIM-9JULI, 8*BLU107 Durandal", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "SAMP-250 - 250 kg GP Chute Retarded Bomb HD", - "quantity": 4 - }, - { - "name": "CLB 4 - 4 x SAMP-250 - 250 kg GP Chute Retarded Bomb HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9JULI, 8*SAMP 250 HD", - "name": "2*AIM-9JULI, 8*SAMP 250 HD", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "SAMP-400 - 400 kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9JULI, 8*SAMP 400 LD", - "name": "2*AIM-9JULI, 8*SAMP 400 LD", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9J Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 251 F1B HE", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", - "name": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F EM", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 1*R530EM", - "name": "2*AIM9-JULI, 1*R530EM", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", - "name": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F EM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", - "name": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", - "name": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "S530F", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 2*S530F, 1*Fuel Tank", - "name": "2*AIM9-JULI, 2*S530F, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 1*R530IR", - "name": "2*R550 Magic I, 1*R530IR", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", - "name": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", - "name": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "S530F", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*S530F, 1*Fuel Tank", - "name": "2*R550 Magic I, 2*S530F, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "S530F", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - }, - { - "name": "BARAX - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*S530F, 1*Fuel Tank, 1*BARAX ECM Pod", - "name": "2*R550 Magic I, 2*S530F, 1*Fuel Tank, 1*BARAX ECM Pod", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "SAMP-250 - 250 kg GP Chute Retarded Bomb HD", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - } - ], - "filename": "f-1.png", - "enabled": true, - "liveries": { - "ec 330 lorraine": { - "name": "EC 330 Lorraine", - "countries": [ - "FRA" - ] - }, - "ec 5 330 cote d'argent (fictional ct)": { - "name": "EC 5/330 Cote d'Argent (FICTIONAL CT)", - "countries": [ - "FRA" - ] - }, - "er 2 33 savoie 100 ans de reco (fictional cr)": { - "name": "ER 233 Savoie 100 ans de reco (FICTIONAL CR)", - "countries": [ - "FRA" - ] - }, - "iriaf 3-6210 _ 2017 blue (eq variant)": { - "name": "IRIAF 3-6210 _ 2017 Blue (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "iriaf 3-6209 _ 2010s blue_gray (eq variant)": { - "name": "IRIAF 3-6209 _ 2010s Blue_Gray (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "er 233 savoie ba 118 mont de marsan (fictional cr)": { - "name": "ER 2/33 Savoie BA 118 Mont de Marsan (FICTIONAL CR)", - "countries": [ - "FRA" - ] - }, - "ala 14 blue skin (ee) albacete": { - "name": "ALA 14 Blue Skin (EE) Albacete", - "countries": [ - "SPN" - ] - }, - "usa company skin (m-ee)": { - "name": "USA Company Skin EE", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ala 14 nato skin 1 (ee)": { - "name": "ALA 14 NATO Skin 1 (EE)", - "countries": [ - "SPN" - ] - }, - "iriaf 3-6210 _ 2013 gray (eq variant)": { - "name": "IRIAF 3-6210 _ 2013 Gray (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "usa company skin 2 (m-ee)": { - "name": "USA Company Skin 2 EE", - "countries": [ - "USA", - "AUSAF" - ] - }, - "iriaf 3-6214 _ 2021 blue (eq variant)": { - "name": "IRIAF 3-6214 _ 2021 Blue (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "aerges nato grey": { - "name": "AERGES NATO GREY", - "countries": [ - "CUB", - "AUS", - "PRT", - "SUN", - "USA", - "BLR", - "HRV", - "LBN", - "SVK", - "TUR", - "ARG", - "BEL", - "FIN", - "SAU", - "RSI", - "CHL", - "AUT", - "EGY", - "ECU", - "CAN", - "QAT", - "YUG", - "ISR", - "PER", - "BHR", - "NGA", - "IDN", - "KAZ", - "INS", - "AUSAF", - "PAK", - "SVN", - "ROU", - "DEN", - "TUN", - "IND", - "CZE", - "MYS", - "GHA", - "OMN", - "RSO", - "IRN", - "UKR", - "JPN", - "THA", - "JOR", - "RSA", - "MEX", - "NOR", - "ITA", - "NETH", - "SUI", - "VNM", - "KOR", - "GRG", - "SDN", - "UK", - "BRA", - "ARE", - "ABH", - "BOL", - "RUS", - "PHL", - "SPN", - "MAR", - "DZA", - "GDR", - "HND", - "PRK", - "SRB", - "BGR", - "LBY", - "VEN", - "IRQ", - "SYR", - "NZG", - "GRC", - "POL", - "SWE", - "GER", - "CHN", - "YEM", - "FRA", - "HUN", - "ETH", - "KWT" - ] - }, - "ec 3 33 lorraine ba 112 reims - champagne ardennes": { - "name": "EC 333 Lorraine BA 112 Reims - Champagne Ardennes", - "countries": [ - "FRA" - ] - }, - "ec 1 12 cambresis": { - "name": "EC 112 BA 103 Cambrai-Épinoy", - "countries": [ - "FRA" - ] - }, - "ala 46 blue skin (ee) gando": { - "name": "ALA 46 Blue Skin (EE) Gando", - "countries": [ - "SPN" - ] - }, - "aerges blue": { - "name": "AERGES BLUE", - "countries": [ - "CUB", - "AUS", - "PRT", - "SUN", - "USA", - "BLR", - "HRV", - "LBN", - "SVK", - "TUR", - "ARG", - "BEL", - "FIN", - "SAU", - "RSI", - "CHL", - "AUT", - "EGY", - "ECU", - "CAN", - "QAT", - "YUG", - "ISR", - "PER", - "BHR", - "NGA", - "IDN", - "KAZ", - "INS", - "AUSAF", - "PAK", - "SVN", - "ROU", - "DEN", - "TUN", - "IND", - "CZE", - "MYS", - "GHA", - "OMN", - "RSO", - "IRN", - "UKR", - "JPN", - "THA", - "JOR", - "RSA", - "MEX", - "NOR", - "ITA", - "NETH", - "SUI", - "VNM", - "KOR", - "GRG", - "SDN", - "UK", - "BRA", - "ARE", - "ABH", - "BOL", - "RUS", - "PHL", - "SPN", - "MAR", - "DZA", - "GDR", - "HND", - "PRK", - "SRB", - "BGR", - "LBY", - "VEN", - "IRQ", - "SYR", - "NZG", - "GRC", - "POL", - "SWE", - "GER", - "CHN", - "YEM", - "FRA", - "HUN", - "ETH", - "KWT" - ] - }, - "ec 212 picardie": { - "name": "EC 212 Picardie", - "countries": [ - "FRA" - ] - }, - "iriaf 3-6212 _ col. naghdibake (eq variant)": { - "name": "IRIAF 3-6212 _ Col. Naghdibake (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "iriaf 3-6211 _ 2010s blue_gray (eq variant)": { - "name": "IRIAF 3-6211 _ 2010s Blue_Gray (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "ec 1 5 vendee ba orange-cariat": { - "name": "EC 1/5 Vendee BA 115 Orange-Cariat", - "countries": [ - "FRA" - ] - }, - "er 233 savoie ba 118 mont de marsan dessert camu (fictional cr)": { - "name": "ER 233 Savoie BA 118 Mont de Marsan Dessert Camu (FICTIONAL CR)", - "countries": [ - "FRA" - ] - }, - "iriaf 3-6215 _ 2021 blue (eq variant)": { - "name": "IRIAF 3-6215 _ 2021 Blue (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "iriaf 3-6210 _ 2021 blue (eq variant)": { - "name": "IRIAF 3-6210 _ 2021 Blue (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "ala 46 sq 462 blue skin (ee) gando": { - "name": "ALA 46 SQ 462 Blue Skin (EE) Gando", - "countries": [ - "SPN" - ] - }, - "ec 2 30 normandie niemen (fictional ct)": { - "name": "EC 2/30 Normandie Niemen (FICTIONAL CT)", - "countries": [ - "FRA" - ] - }, - "iriaf 3-6215 _ 1990-2010s desert (eq variant)": { - "name": "IRIAF 3-6215 _ 1990-2010s Desert (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "aerges camo": { - "name": "AERGES CAMO", - "countries": [ - "CUB", - "AUS", - "PRT", - "SUN", - "USA", - "BLR", - "HRV", - "LBN", - "SVK", - "TUR", - "ARG", - "BEL", - "FIN", - "SAU", - "RSI", - "CHL", - "AUT", - "EGY", - "ECU", - "CAN", - "QAT", - "YUG", - "ISR", - "PER", - "BHR", - "NGA", - "IDN", - "KAZ", - "INS", - "AUSAF", - "PAK", - "SVN", - "ROU", - "DEN", - "TUN", - "IND", - "CZE", - "MYS", - "GHA", - "OMN", - "RSO", - "IRN", - "UKR", - "JPN", - "THA", - "JOR", - "RSA", - "MEX", - "NOR", - "ITA", - "NETH", - "SUI", - "VNM", - "KOR", - "GRG", - "SDN", - "UK", - "BRA", - "ARE", - "ABH", - "BOL", - "RUS", - "PHL", - "SPN", - "MAR", - "DZA", - "GDR", - "HND", - "PRK", - "SRB", - "BGR", - "LBY", - "VEN", - "IRQ", - "SYR", - "NZG", - "GRC", - "POL", - "SWE", - "GER", - "CHN", - "YEM", - "FRA", - "HUN", - "ETH", - "KWT" - ] - }, - "usa company grey (m-ee)": { - "name": "USA Company Grey EE", - "countries": [ - "USA", - "AUSAF" - ] - } - }, - "type": "Aircraft", - "description": "Single Jet engine, swept wing, 1 crew.", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MosquitoFBMkVI": { - "name": "MosquitoFBMkVI", - "coalition": "blue", - "label": "Mosquito FB MkVI", - "era": "WW2", - "shortLabel": "Mos", - "loadouts": [ - { - "items": [ - { - "name": "100 gal. Drop Tank", - "quantity": 2 - }, - { - "name": "500 lb MC Short tail", - "quantity": 2 - } - ], - "enabled": true, - "code": "100 gal Drop tank*2, 500 lb MC Short tail*2", - "name": "100 gal Drop tank*2, 500 lb MC Short tail*2", - "roles": [ - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": "2 x RP-3 60lb F No1 Mk.I", - "quantity": 2 - }, - { - "name": "100 gal. Drop Tank", - "quantity": 2 - }, - { - "name": "250 lb MC Mk.II", - "quantity": 2 - } - ], - "enabled": true, - "code": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", - "name": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", - "roles": [ - "CAP", - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "500 lb S.A.P.", - "quantity": 2 - }, - { - "name": "250 lb S.A.P.", - "quantity": 2 - } - ], - "enabled": true, - "code": "250 lb S.A.P*2; 500 lb S.A.P.*2", - "name": "250 lb S.A.P*2; 500 lb S.A.P.*2", - "roles": [ - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": "500 lb GP Mk.V", - "quantity": 2 - }, - { - "name": "500 lb MC Short tail", - "quantity": 2 - } - ], - "enabled": true, - "code": "500 lb GP Mk.V*2, 500 lb GP Short tail*2", - "name": "500 lb GP Mk.V*2, 500 lb GP Short tail*2", - "roles": [ - "CAP", - "Strike", - "CAS", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "500 lb GP Short tail", - "quantity": 4 - } - ], - "enabled": true, - "code": "500 lb GP Short tail*4", - "name": "500 lb GP Short tail*4", - "roles": [ - "CAP", - "Strike", - "CAS", - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "", - "quantity": 2 - }, - { - "name": "250 lb S.A.P.", - "quantity": 2 - }, - { - "name": "4 x RP-3 60lb SAP No2 Mk.I", - "quantity": 2 - } - ], - "enabled": true, - "code": "RP-3 60lb SAP No2 Mk.I*8, 250 lb A.A.P.*2", - "name": "RP-3 60lb SAP No2 Mk.I*8, 250 lb A.A.P.*2", - "roles": [ - "CAP", - "Antiship Strike", - "CAS", - "Strike" - ] - } - ], - "filename": "mosquito.png", - "enabled": true, - "liveries": { - "25th bombardment group p": { - "name": "USAAF 25th Bombardment Group \"P\" (Invasion Stripes)", - "countries": [ - "USA" - ] - }, - "l-3 pz474 1945": { - "name": "L-3 PZ474 1945", - "countries": [] - }, - "raf": { - "name": "RAF 1944", - "countries": "All" - }, - "605 sqn up-j wag's war wagon": { - "name": "605 Sqn UP-J \"Wag's War Wagon\"", - "countries": "All" - }, - "605 sqn up-o": { - "name": "605 Sqn UP-O", - "countries": "All" - }, - "605 sqn": { - "name": "605 Sqn", - "countries": "All" - }, - "iaf - 1956 - 110th squadron": { - "name": "IAF - 1956 - 110th Squadron", - "countries": "All" - }, - "ussr air force": { - "name": "USSR Air Force", - "countries": [] - }, - "no. 235 squadron raf 1944": { - "name": "No. 235 Squadron RAF 1944", - "countries": [] - }, - "no. 613 squadron raf june 1944": { - "name": "No. 613 Squadron RAF, June 1944", - "countries": [ - "UK" - ] - }, - "armée de l'air blue": { - "name": "Armée de L'air Blue Camo", - "countries": [ - "FRA" - ] - }, - "raf, ml897d, no.1409 met flight, wyton, late 1943": { - "name": "RAF, ML897/D, No.1409 Met Flight, Wyton, late 1943", - "countries": [ - "UK" - ] - }, - "no. 27 squadron raf popeye camo letters on": { - "name": "No. 27 Squadron RAF Popeye Camo Letters on", - "countries": [] - }, - "25th bombardment group f": { - "name": "USAAF 25th Bombardment Group \"F\"", - "countries": [ - "USA" - ] - }, - "305sqn july": { - "name": "305Sqn July 1944", - "countries": [] - }, - "305sqn june": { - "name": "305Sqn June 1944", - "countries": [] - }, - "25th bombardment group z": { - "name": "USAAF 25th Bombardment Group \"Z\" (Invasion Stripes)", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 propeller, straight wing, 2 crew. Mosquito.", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "P-47D-40": { - "name": "P-47D-40", - "coalition": "blue", - "label": "P-47D Thunderbolt", - "era": "WW2", - "shortLabel": "P47", - "loadouts": [ - { - "items": [ - { - "name": "AN-M57 - 250lb GP Bomb LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "AN-M57*3", - "name": "AN-M57*3", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "110 US gal. Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AN-M64*2, Fuel110", - "name": "AN-M64*2, Fuel110", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AN-M65 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AN-M65*2", - "name": "AN-M65*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "150 US gal. Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel150*2", - "name": "Fuel150*2", - "roles": [ - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "5 x HVAR, UnGd Rkt", - "quantity": 2 - }, - { - "name": "110 US gal. Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "HVAR*10, Fuel110", - "name": "HVAR*10, Fuel110", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "3 x 4.5 inch M8 UnGd Rocket", - "quantity": 2 - }, - { - "name": "AN-M57 - 250lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "110 US gal. Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "M8*6, AN-M57*2, Fuel110", - "name": "M8*6, AN-M57*2, Fuel110", - "roles": [ - "Strike", - "CAS" - ] - } - ], - "filename": "p-47.png", - "enabled": true, - "liveries": { - "79thfg 86thfs the trojan warhorse": { - "name": "79thFG 86thFS The Trojan Warhorse", - "countries": [ - "USA" - ] - }, - "61st_fs_d_day": { - "name": "61st FS, D-day", - "countries": [ - "USA" - ] - }, - "lt_col_gabreski_d_day": { - "name": "Lt.Col. Gabby Gabreski, 61st FS, D-day", - "countries": [ - "USA" - ] - }, - "lt_col_benjamin_mayo": { - "name": "Lt.Col. Benjamin Mayo", - "countries": [ - "USA" - ] - }, - "eagle dynamics commemorative": { - "name": "Eagle Dynamics Commemorative", - "countries": [ - "USA" - ] - }, - "tony 5th emergency rescue squadron": { - "name": "TONY 5th Emergency Rescue Squadron", - "countries": [ - "USA" - ] - }, - "usaf standard": { - "name": "USAF standard", - "countries": [ - "USA" - ] - }, - "maj_howard_park_1945": { - "name": "Maj. Howard Park, 513th FS, France 1945", - "countries": [ - "USA" - ] - }, - "61st_fs_8th_af_hvz": { - "name": "61st FS 8th Air Force HV-Z (Capt. Witold Lanowski)", - "countries": [ - "USA", - "POL" - ] - }, - "53rd_fs_9th_air_force": { - "name": "53rd Fighter Squadron", - "countries": [ - "USA" - ] - }, - "1st brazilian ftr sq-jambock a1-menezes": { - "name": "1st Brazilian Ftr Sq-Jambock A1-Menezes", - "countries": [] - }, - "61st_fs_1944": { - "name": "61st FS, July 1944", - "countries": [ - "USA" - ] - }, - "lt_col_gabreski_1944": { - "name": "Lt.Col. Gabby Gabreski, 61st FS, July 1944", - "countries": [ - "USA" - ] - }, - "lend-lease": { - "name": "Lend-Lease", - "countries": [ - "SUN", - "RUS" - ] - }, - "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d28": { - "name": "509th FS 405th FG \"Chief Ski-U-Mah\" for D-30 (Early) ", - "countries": "All" - }, - "ussr-blue-scheme": { - "name": "USSR - blue", - "countries": [ - "SUN", - "RUS" - ] - }, - "raf thunderbolt": { - "name": "RAF Thunderbolt", - "countries": [] - }, - "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d40": { - "name": "509th FS 405th FG \"Chief Ski-U-Mah\"", - "countries": "All" - }, - "warchief": { - "name": "WarChief", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Thunderbolt", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "P-51D-30-NA": { - "name": "P-51D-30-NA", - "coalition": "blue", - "label": "P-51D Mustang", - "era": "WW2", - "shortLabel": "P51", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "75 US gal. Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel75*2", - "name": "Fuel75*2", - "roles": [ - "CAP", - "CAP", - "FAC-A" - ] - }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 10 - } - ], - "enabled": true, - "code": "HVAR*10", - "name": "HVAR*10", - "roles": [ - "CAS", - "Strike", - "Runway Attack", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "HVAR*6", - "name": "HVAR*6", - "roles": [ - "CAS", - "Strike", - "Antiship Strike", - "FAC-A" - ] - }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 6 - }, - { - "name": "75 US gal. Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "HVAR*6,Fuel75*2", - "name": "HVAR*6,Fuel75*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 6 - }, - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "HVAR*6,M64*2", - "name": "HVAR*6,M64*2", - "roles": [ - "CAS", - "Strike", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "M64*2", - "name": "M64*2", - "roles": [ - "Strike", - "Antiship Strike", - "CAS", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "HVAR Smoke Generator", - "quantity": 2 - } - ], - "enabled": true, - "code": "Smokes", - "name": "Smokes", - "roles": [] - } - ], - "filename": "p-51.png", - "enabled": true, - "liveries": { - "79thfg 86thfs the trojan warhorse": { - "name": "79thFG 86thFS The Trojan Warhorse", - "countries": [ - "USA" - ] - }, - "61st_fs_d_day": { - "name": "61st FS, D-day", - "countries": [ - "USA" - ] - }, - "lt_col_gabreski_d_day": { - "name": "Lt.Col. Gabby Gabreski, 61st FS, D-day", - "countries": [ - "USA" - ] - }, - "lt_col_benjamin_mayo": { - "name": "Lt.Col. Benjamin Mayo", - "countries": [ - "USA" - ] - }, - "eagle dynamics commemorative": { - "name": "Eagle Dynamics Commemorative", - "countries": [ - "USA" - ] - }, - "tony 5th emergency rescue squadron": { - "name": "TONY 5th Emergency Rescue Squadron", - "countries": [ - "USA" - ] - }, - "usaf standard": { - "name": "USAF standard", - "countries": [ - "USA" - ] - }, - "maj_howard_park_1945": { - "name": "Maj. Howard Park, 513th FS, France 1945", - "countries": [ - "USA" - ] - }, - "61st_fs_8th_af_hvz": { - "name": "61st FS 8th Air Force HV-Z (Capt. Witold Lanowski)", - "countries": [ - "USA", - "POL" - ] - }, - "53rd_fs_9th_air_force": { - "name": "53rd Fighter Squadron", - "countries": [ - "USA" - ] - }, - "1st brazilian ftr sq-jambock a1-menezes": { - "name": "1st Brazilian Ftr Sq-Jambock A1-Menezes", - "countries": [] - }, - "61st_fs_1944": { - "name": "61st FS, July 1944", - "countries": [ - "USA" - ] - }, - "lt_col_gabreski_1944": { - "name": "Lt.Col. Gabby Gabreski, 61st FS, July 1944", - "countries": [ - "USA" - ] - }, - "lend-lease": { - "name": "Lend-Lease", - "countries": [ - "SUN", - "RUS" - ] - }, - "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d28": { - "name": "509th FS 405th FG \"Chief Ski-U-Mah\" for D-30 (Early) ", - "countries": "All" - }, - "ussr-blue-scheme": { - "name": "USSR - blue", - "countries": [ - "SUN", - "RUS" - ] - }, - "raf thunderbolt": { - "name": "RAF Thunderbolt", - "countries": [] - }, - "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d40": { - "name": "509th FS 405th FG \"Chief Ski-U-Mah\"", - "countries": "All" - }, - "warchief": { - "name": "WarChief", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Mustang", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "S-3B Tanker": { - "name": "S-3B Tanker", - "coalition": "blue", - "label": "S-3B Tanker", - "era": "Early Cold War", - "shortLabel": "S3B", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Tanker" - ] - } - ], - "filename": "s-3.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "NAVY Standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, straight wing, 4 crew. Viking", - "abilities": "Tanker, Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "Su-17M4": { - "name": "Su-17M4", - "coalition": "red", - "label": "Su-17M4 Fitter", - "era": "Mid Cold War", - "shortLabel": "S17", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-32*4,R-60M*2,FAB-250*4", - "name": "UB-32*4,R-60M*2,FAB-250*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 6 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100*24,R-60M*2", - "name": "FAB-100*24,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-32*4,R-60M*2,Fuel*2", - "name": "UB-32*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "B-8*4,R-60M*2,FAB-250*4", - "name": "B-8*4,R-60M*2,FAB-250*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2,Fuel*2", - "name": "Kh-29L*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "B-8*4,R-60M*2,Fuel*2", - "name": "B-8*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-60M*2,Fuel*2", - "name": "Kh-29T*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-60M*2", - "name": "BetAB-500*6,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25MR*4,R-60M*2,Fuel*2", - "name": "Kh-25MR*4,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-24*4,R-60M*2,Fuel*2", - "name": "S-24*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh25MPU*2_Kh25ML*2_,R60M*2_Fuel*2", - "name": "Kh25MPU*2_Kh25ML*2_,R60M*2_Fuel*2", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh58*2_Kh25MPU*2_R60M*2_Fuel*2", - "name": "Kh58*2_Kh25MPU*2_R60M*2_Fuel*2", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*16,R-60M*2", - "name": "FAB-250*16,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25ML*4,R-60M*2,Fuel*2", - "name": "Kh-25ML*4,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*4,SPPU-22*2,R-60M*2", - "name": "RBK-500AO*4,SPPU-22*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-24*4,R-60M*2,FAB-250*4", - "name": "S-24*4,R-60M*2,FAB-250*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 1150L", - "quantity": 4 - } - ], - "enabled": true, - "code": "Fuel*4", - "name": "Fuel*4", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500*6,R-60M*2", - "name": "FAB-500*6,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25ML*2,Kh-29L*2,R-60*2", - "name": "Kh-25ML*2,Kh-29L*2,R-60*2", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "su-17.png", - "enabled": true, - "liveries": { - "af standard (worn-out)": { - "name": "af standard (worn-out)", - "countries": [ - "UKR" - ] - }, - "shap limanskoye ab": { - "name": "shap limanskoye ab", - "countries": [ - "UKR" - ] - }, - "af standard (rus)": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard (worn-out) (rus)": { - "name": "af standard (worn-out)", - "countries": [ - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "UKR" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew. Fitter", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-24M": { - "name": "Su-24M", - "coalition": "red", - "label": "Su-24M Fencer", - "era": "Mid Cold War", - "shortLabel": "S24", - "loadouts": [ - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - } - ], - "enabled": true, - "code": "B-8*2,Fuel*2", - "name": "B-8*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*2,Fuel*3", - "name": "B-8*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "B-8*6", - "name": "B-8*6", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "BetAB-500*4,R-60M*2", - "name": "BetAB-500*4,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "FAB-100*24", - "name": "FAB-100*24", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-1500*2,R-60M*2", - "name": "FAB-1500*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 8 - } - ], - "enabled": true, - "code": "FAB-250*8", - "name": "FAB-250*8", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "FAB-500*4,R-60M*2", - "name": "FAB-500*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel*3", - "name": "Fuel*3", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-1500L - 1500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-1500*2,R-60M*2,Fuel", - "name": "KAB-1500*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "KAB-500*4,R-60M*2", - "name": "KAB-500*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - } - ], - "enabled": true, - "code": "Kh-25ML*4", - "name": "Kh-25ML*4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", - "quantity": 4 - } - ], - "enabled": true, - "code": "Kh-25MR*4", - "name": "Kh-25MR*4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2", - "name": "Kh-29L*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-60M*2", - "name": "Kh-29T*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-31A*2,R-60M*2", - "name": "Kh-31A*2,R-60M*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31A*2,R-60M*2,Fuel", - "name": "Kh-31A*2,R-60M*2,Fuel", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-59M*2,R-60M*2,Fuel", - "name": "Kh-59M*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh25MPU*2_Kh25ML*2_L-081", - "name": "Kh25MPU*2_Kh25ML*2_L-081", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh31P*2_Kh25ML*2_L-081", - "name": "Kh31P*2_Kh25ML*2_L-081", - "roles": [ - "SEAD", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh58*2_Kh25ML*2_L-081", - "name": "Kh58*2_Kh25ML*2_L-081", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "RBK-250*8", - "name": "RBK-250*8", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "RBK-500AO*4,R-60M*2", - "name": "RBK-500AO*4,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*2,Fuel*3", - "name": "S-24*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-24*4", - "name": "S-24*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-25*2,Fuel*3", - "name": "S-25*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*4", - "name": "S-25*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-13*2,Fuel*3", - "name": "UB-13*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-13*4", - "name": "UB-13*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-13*4,FAB-500*2", - "name": "UB-13*4,FAB-500*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-32*2,Fuel*3", - "name": "UB-32*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-32*4", - "name": "UB-32*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-32*4,FAB-250*4", - "name": "UB-32*4,FAB-250*4", - "roles": [ - "Strike" - ] - } - ], - "filename": "su-24.png", - "enabled": true, - "liveries": { - "syrian air force": { - "name": "Syrian Air Force", - "countries": [ - "SYR" - ] - }, - "iran air force": { - "name": "Iran Air Force", - "countries": [ - "IRN" - ] - }, - "algerian af kx-12": { - "name": "Algerian AF KX-12", - "countries": [ - "DZA" - ] - }, - "ukrainian air force standard": { - "name": "Ukrainian Air Force", - "countries": [ - "UKR" - ] - }, - "kazakhstan air force": { - "name": "600th Airbase Kazakhstan", - "countries": [ - "KAZ" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swing wing, 2 crew. Fencer", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-25": { - "name": "Su-25", - "coalition": "red", - "label": "Su-25T Frogfoot", - "era": "Late Cold War", - "shortLabel": "S25", - "loadouts": [ - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 2 - } - ], - "enabled": true, - "code": "2-25L*2, KH-25ML*2, RBK-500*2, B-8MI*2, R-60M*2", - "name": "2-25L*2, KH-25ML*2, RBK-500*2, B-8MI*2, R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-60M*2,Fuel*2", - "name": "BetAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "BetAB-500ShP*8,R-60M*2", - "name": "BetAB-500ShP*8,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100*16,R-60M*2,Fuel*2", - "name": "FAB-100*16,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 8 - } - ], - "enabled": true, - "code": "FAB-100*32,R-60M*2", - "name": "FAB-100*32,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", - "name": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*6,R-60M*2,Fuel*2", - "name": "FAB-250*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500*6,R-60M*2,Fuel*2", - "name": "FAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25*4,Kh-29T*2,R-60*2", - "name": "Kh-25*4,Kh-29T*2,R-60*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25ML*4,R-60M*2,Fuel*2", - "name": "Kh-25ML*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*2,R-60M*2,Fuel*2", - "name": "Kh-29L*2,Kh-25ML*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,R-60M*2", - "name": "Kh-29L*2,Kh-25ML*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", - "name": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2,Fuel*2", - "name": "Kh-29L*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", - "name": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "RBK-250*4,S-8KOM*80,R-60M*2", - "name": "RBK-250*4,S-8KOM*80,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "RBK-250*8,R-60M*2", - "name": "RBK-250*8,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", - "name": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-60M*2,Fuel*2", - "name": "RBK-500AO*6,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25*6,R-60M*2,Fuel*2", - "name": "S-25*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 6 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25*6,SPPU-22*2,R-60M*2", - "name": "S-25*6,SPPU-22*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25L*6,R-60*2,Fuel*2", - "name": "S-25L*6,R-60*2,Fuel*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "S-25L*6,UB-13*2,R-60M*2", - "name": "S-25L*6,UB-13*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-8KOM*120,R-60M*2,Fuel*2", - "name": "S-8KOM*120,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8TsM SM Orange", - "quantity": 8 - } - ], - "enabled": true, - "code": "S-8TsM*160,R-60*2", - "name": "S-8TsM*160,R-60*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "SAB-100*8,R-60*2", - "name": "SAB-100*8,R-60*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-13*6,R-60M*2,Fuel*2", - "name": "UB-13*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - } - ], - "filename": "su-25.png", - "enabled": false, - "liveries": { - "broken camo scheme #2 (native). 452th shap": { - "name": "broken camo scheme #2 (native). 452th shap.", - "countries": [ - "UKR" - ] - }, - "broken camo scheme #1 (native). 299th oshap": { - "name": "broken camo scheme #1 (native). 299th oshap.", - "countries": [ - "UKR" - ] - }, - "field camo scheme #1 (native)": { - "name": "field camo scheme #1 (native)", - "countries": [ - "SUN", - "RUS" - ] - }, - "field camo scheme #1 (native)01": { - "name": "field camo scheme #1 (native)", - "countries": [ - "GRG" - ] - }, - "haf camo": { - "name": "Hellenic Airforce - Camo (Fictional)", - "countries": [ - "GRC" - ] - }, - "`scorpion` demo scheme (native)": { - "name": "`scorpion` demo scheme (native)", - "countries": [ - "GRG" - ] - }, - "abkhazian air force": { - "name": "Abkhazian Air Force", - "countries": [ - "ABH" - ] - }, - "field camo scheme #3 (worn-out). 960th shap": { - "name": "field camo scheme #3 (worn-out). 960th shap.", - "countries": [ - "RUS" - ] - }, - "petal camo scheme #1 (native). 299th brigade": { - "name": "petal camo scheme #1 (native). 299th brigade.", - "countries": [ - "UKR" - ] - }, - "petal camo scheme #2 (native). 299th brigade": { - "name": "petal camo scheme #2 (native). 299th brigade.", - "countries": [ - "UKR" - ] - }, - "algerian af desert fictional": { - "name": "Algerian AF Desert Fictional", - "countries": [ - "DZA" - ] - }, - "forest camo scheme #1 (native)": { - "name": "forest camo scheme #1 (native)", - "countries": [ - "RUS" - ] - }, - "irgc 54": { - "name": "IRGC 54", - "countries": [ - "IRN" - ] - }, - "field camo scheme #2 (native). 960th shap": { - "name": "field camo scheme #2 (native). 960th shap.", - "countries": [ - "RUS" - ] - }, - "haf aegean ghost": { - "name": "Hellenic Airforce - Aegean Ghost (Fictional)", - "countries": [ - "GRC" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Frogfoot", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-25T": { - "name": "Su-25T", - "coalition": "red", - "label": "Su-25T Frogfoot", - "era": "Late Cold War", - "shortLabel": "S25", - "loadouts": [ - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "name": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 2 - }, - { - "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "name": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-60M*2,Fuel*2", - "name": "BetAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "BetAB-500ShP*8,R-60M*2", - "name": "BetAB-500ShP*8,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100*16,R-60M*2,Fuel*2", - "name": "FAB-100*16,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 8 - } - ], - "enabled": true, - "code": "FAB-100*32,R-60M*2", - "name": "FAB-100*32,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,SPPU-22*2,SAB-100*2,R-60M*2", - "name": "FAB-250*4,SPPU-22*2,SAB-100*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*6,R-60M*2,Fuel*2", - "name": "FAB-250*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500*6,R-60M*2,Fuel*2", - "name": "FAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 800L Wing", - "quantity": 4 - } - ], - "enabled": true, - "code": "Fuel*4", - "name": "Fuel*4", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "KAB-500Kr - 500kg TV Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", - "name": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", - "name": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,R-73*2,Mercury LLTV Pod,MPS-410", - "name": "Kh-29L*2,Kh-25ML*4,R-73*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", - "name": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "KH-29T*2, VIKHR*2, ECM", - "name": "KH-29T*2, VIKHR*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,Kh-25ML*4,R-73*2,MPS-410", - "name": "Kh-29T*2,Kh-25ML*4,R-73*2,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", - "name": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", - "name": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", - "name": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh58*2_Kh25MPU*2_Kh25ML*2_R73*2_L-081_MPS-410", - "name": "Kh58*2_Kh25MPU*2_Kh25ML*2_R73*2_L-081_MPS-410", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", - "quantity": 8 - } - ], - "enabled": true, - "code": "KMGU-2 (AO-2.5RT)*8,R-60M*2", - "name": "KMGU-2 (AO-2.5RT)*8,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", - "name": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-250*2,UB-32*4,R-60M*2,Fuel*2", - "name": "RBK-250*2,UB-32*4,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "RBK-250*4,UB-32*4,R-60M*2", - "name": "RBK-250*4,UB-32*4,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "RBK-250*8,R-60M*2", - "name": "RBK-250*8,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", - "name": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-60M*2,Fuel*2", - "name": "RBK-500AO*6,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", - "name": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25*6,R-60M*2,Fuel*2", - "name": "S-25*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "S-25L*6,UB-13*2,R-60M*2", - "name": "S-25L*6,UB-13*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-8KOM*120,R-60M*2,Fuel*2", - "name": "S-8KOM*120,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-13*6,R-60M*2,Fuel*2", - "name": "UB-13*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - } - ], - "filename": "su-25.png", - "enabled": true, - "liveries": { - "af standard 2": { - "name": "af standard 2", - "countries": [ - "SUN", - "RUS" - ] - }, - "algerian af grey ku-02": { - "name": "Algerian AF Grey KU-02", - "countries": [ - "DZA" - ] - }, - "su-25t test scheme": { - "name": "su-25t test scheme", - "countries": [ - "RUS" - ] - }, - "haf - fictional": { - "name": "Hellenic Airforce (Fictional)", - "countries": [ - "GRC" - ] - }, - "algerian af trainer ku-04": { - "name": "Algerian AF Trainer KU-04", - "countries": [ - "DZA" - ] - }, - "algerian af grey ku-01": { - "name": "Algerian AF Grey KU-01", - "countries": [ - "DZA" - ] - }, - "af standard 101": { - "name": "af standard 1", - "countries": [ - "GRG" - ] - }, - "algerian af desert ku-03": { - "name": "Algerian AF Desert KU-03", - "countries": [ - "DZA" - ] - }, - "af standard 1": { - "name": "af standard 1", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "GRG" - ] - } - }, - "type": "Attack", - "description": "2 jet engine, swept wing, 1 crew. Frogfoot", - "abilities": "Fox 2 and gun, Dumb bombs, rockets, SEAD and ATGMs, Subsonic", - "canTargetPoint": true - }, - "Su-27": { - "name": "Su-27", - "coalition": "red", - "label": "Su-27 Flanker", - "era": "Late Cold War", - "shortLabel": "S27", - "loadouts": [ - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": " CAS S-25 Rockets", - "name": " CAS S-25 Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500ShP*6,R-73*2,ECM", - "name": "BetAB-500ShP*6,R-73*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets", - "name": "CAS S-13 Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-25 Rockets + FAB-500 Bombs", - "name": "CAS S-25 Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets", - "name": "CAS S-8KOM Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-100 Bombs", - "name": "CAS S-8KOM Rockets + FAB-100 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 5 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - }, - { - "name": "MBD3-U6-68 with 3 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-250 Bombs", - "name": "CAS S-8KOM Rockets + FAB-250 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-500 Bombs", - "name": "CAS S-8KOM Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 3 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + KMGU PTAB", - "name": "CAS S-8KOM Rockets + KMGU PTAB", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", - "name": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-500 PTAB1", - "name": "CAS S-8KOM Rockets + RBK-500 PTAB1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-500 PTAB10", - "name": "CAS S-8KOM Rockets + RBK-500 PTAB10", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets", - "name": "CAS S-8OFP Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets + FAB-100 Bombs", - "name": "CAS S-8OFP Rockets + FAB-100 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets + FAB-500 Bombs", - "name": "CAS S-8OFP Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,ECM", - "name": "FAB-500*6,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", - "quantity": 5 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KMGU-2 (AO-2.5RT)*5,R-73*2,ECM", - "name": "KMGU-2 (AO-2.5RT)*5,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 5 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KMGU-2 (PTAB-2.5KO)*5,R-73*2,ECM", - "name": "KMGU-2 (PTAB-2.5KO)*5,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27ER*4,R-27ET*2,ECM", - "name": "R-73*2,R-27ER*4,R-27ET*2,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27ER*6,ECM", - "name": "R-73*2,R-27ER*6,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*4,ECM", - "name": "R-73*4,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4,R-27ER*4,R-27ET*2", - "name": "R-73*4,R-27ER*4,R-27ET*2", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-27ER*6", - "name": "R-73*4,R-27ER*6", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*6", - "name": "R-73*6", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-13*10,RBK-500AO*2,FAB-500*2,R-73*2,ECM", - "name": "S-13*10,RBK-500AO*2,FAB-500*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*2,FAB-500*4,R-73*4", - "name": "S-25*2,FAB-500*4,R-73*4", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-25*4, FAB-500*4, R-73*2, ECM", - "name": "S-25*4, FAB-500*4, R-73*2, ECM", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "su-27.png", - "enabled": true, - "liveries": { - "kubinka afb (russian knights old)": { - "name": "Kubinka AFB (Russian Knights Old)", - "countries": [ - "RUS" - ] - }, - "mirgorod afb (831th brigade)": { - "name": "Mirgorod AFB (831th brigade)", - "countries": [ - "UKR" - ] - }, - "lypetsk afb (falcons of russia)": { - "name": "Lypetsk AFB (Falcons of Russia)", - "countries": [ - "RUS" - ] - }, - "hotilovo afb": { - "name": "Hotilovo AFB", - "countries": [ - "RUS" - ] - }, - "plaaf k2s new parade": { - "name": "PLAAF K2S new parade", - "countries": [ - "CHN" - ] - }, - "plaaf standard": { - "name": "PLAAF Standard", - "countries": [ - "CHN" - ] - }, - "algerian af grey 04": { - "name": "Algerian AF GREY 04", - "countries": [ - "DZA" - ] - }, - "air force standard early": { - "name": "Air Force Standard Early", - "countries": [ - "SUN", - "RUS" - ] - }, - "air force ukraine standard": { - "name": "Air Force Ukraine Standard", - "countries": [ - "UKR" - ] - }, - "planaf hh8s": { - "name": "PLANAF HH8S", - "countries": [ - "CHN" - ] - }, - "ozerne afb (9th brigade)": { - "name": "Ozerne AFB (9th brigade)", - "countries": [ - "UKR" - ] - }, - "air force ukraine standard early": { - "name": "Air Force Ukraine Standard Early", - "countries": [ - "UKR" - ] - }, - "algerian af blue 02": { - "name": "Algerian AF Blue 02", - "countries": [ - "DZA" - ] - }, - "plaaf k1s old": { - "name": "PLAAF K1S old", - "countries": [ - "CHN" - ] - }, - "m gromov fri": { - "name": "M Gromov FRI", - "countries": [ - "RUS" - ] - }, - "plaaf k33s": { - "name": "PLAAF K33S", - "countries": [ - "CHN" - ] - }, - "air force standard": { - "name": "Air Force Standard", - "countries": [ - "SUN", - "RUS" - ] - }, - "plaaf k2s old": { - "name": "PLAAF K2S old", - "countries": [ - "CHN" - ] - }, - "chkalovsk afb (689 gviap)": { - "name": "Chkalovsk AFB (689 GvIAP)", - "countries": [ - "RUS" - ] - }, - "kazakhstan air defense forces": { - "name": "Kazakhstan Air Defense Forces", - "countries": [ - "KAZ" - ] - }, - "haf aegean ghost": { - "name": "Hellenic Airforce - Aegean Ghost (Fictional)", - "countries": [ - "GRC" - ] - }, - "besovets afb": { - "name": "Besovets AFB", - "countries": [ - "RUS" - ] - }, - "kilpyavr afb (maresyev)": { - "name": "Kilpyavr AFB (Maresyev)", - "countries": [ - "RUS" - ] - }, - "mirgorod afb (digital camo)": { - "name": "Mirgorod AFB (Digital camo)", - "countries": [ - "UKR" - ] - }, - "plaaf k2s new": { - "name": "PLAAF K2S new", - "countries": [ - "CHN" - ] - }, - "air force standard old": { - "name": "Air Force Standard old", - "countries": [ - "SUN", - "RUS" - ] - }, - "lodeynoye pole afb (177 iap)": { - "name": "Lodeynoye pole AFB (177 IAP)", - "countries": [ - "RUS" - ] - }, - "kubinka afb (russian knights)": { - "name": "Kubinka AFB (Russian Knights)", - "countries": [ - "RUS" - ] - }, - "lypetsk afb (shark)": { - "name": "Lypetsk AFB (Shark)", - "countries": [ - "RUS" - ] - }, - "besovets afb 2 squadron": { - "name": "Besovets AFB 2 squadron", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-30": { - "name": "Su-30", - "coalition": "red", - "label": "Su-30 Super Flanker", - "era": "Late Cold War", - "shortLabel": "S30", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-77*6,ECM", - "name": "R-73*2,R-77*6,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27T*2,R-27R*4", - "name": "R-73*2,R-27T*2,R-27R*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-73*2,ECM", - "name": "RBK-500AO*6,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31P*2,Kh-31A*2,R-73*2,R-77*2,ECM", - "name": "Kh-31P*2,Kh-31A*2,R-73*2,R-77*2,ECM", - "roles": [ - "Antiship Strike", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4,R-27T*2,R-27R*4", - "name": "R-73*4,R-27T*2,R-27R*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-77*2,Kh-35*2,ECM", - "name": "R-73*2,R-77*2,Kh-35*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-35*2,Kh-31P*2,R-73*2,R-77*2,ECM", - "name": "Kh-35*2,Kh-31P*2,R-73*2,R-77*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,B-8*2,R-73*2,ECM", - "name": "FAB-250*4,B-8*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-1500L - 1500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-1500*2,R-73*2,R-77*2,ECM", - "name": "KAB-1500*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*6,R-73*2,ECM", - "name": "RBK-250*6,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-77*6", - "name": "R-73*4,R-77*6", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,S-25*2,R-73*2,ECM", - "name": "FAB-250*4,S-25*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27R*2,R-27ER*4,ECM", - "name": "R-73*2,R-27R*2,R-27ER*4,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27T*2,R-27ER*2,R-77*2,ECM", - "name": "R-73*2,R-27T*2,R-27ER*2,R-77*2,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-1500*2,R-73*2,R-77*2,ECM", - "name": "FAB-1500*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-27T*2,R-27ER*2,R-77*2", - "name": "R-73*4,R-27T*2,R-27ER*2,R-77*2", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-59M*2,R-73*2,R-77*2,ECM", - "name": "Kh-59M*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,ECM", - "name": "FAB-500*6,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2,R-27ER*4", - "name": "R-73*4,R-27R*2,R-27ER*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*4,R-73*2,R-77*2,ECM", - "name": "Kh-29L*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-73*2,ECM", - "name": "BetAB-500*6,R-73*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4", - "name": "R-73*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-73*2,ECM", - "name": "FAB-250*4,UB-13*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-77*4,R-27ER*2,ECM", - "name": "R-73*2,R-77*4,R-27ER*2,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*4,R-73*2,R-77*2,ECM", - "name": "KAB-500*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*6,R-73*2,ECM", - "name": "FAB-250*6,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-77*4,R-27ER*2", - "name": "R-73*4,R-77*4,R-27ER*2", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*4,R-73*2,R-77*2,ECM", - "name": "Kh-29T*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31P*4,R-73*2,R-77*2,ECM", - "name": "Kh-31P*4,R-73*2,R-77*2,ECM", - "roles": [ - "SEAD" - ] - } - ], - "filename": "su-34.png", - "enabled": true, - "liveries": { - "af standard last": { - "name": "af standard last", - "countries": [ - "RUS" - ] - }, - "`russian knights` team #25": { - "name": "`russian knights` team #25", - "countries": [ - "RUS" - ] - }, - "adf 148th ctc savasleyka ab": { - "name": "adf 148th ctc savasleyka ab", - "countries": [ - "RUS" - ] - }, - "`desert` test paint scheme": { - "name": "`desert` test paint scheme", - "countries": [ - "RUS" - ] - }, - "`test-pilots` team #597": { - "name": "`test-pilots` team #597", - "countries": [ - "RUS" - ] - }, - "`snow` test paint scheme": { - "name": "`snow` test paint scheme", - "countries": [ - "RUS" - ] - }, - "af standard early": { - "name": "af standard early", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard last (worn-out)": { - "name": "af standard last (worn-out)", - "countries": [ - "RUS" - ] - }, - "af standard early (worn-out)": { - "name": "af standard early (worn-out)", - "countries": [ - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-33": { - "name": "Su-33", - "coalition": "red", - "label": "Su-33 Navy Flanker", - "era": "Late Cold War", - "shortLabel": "S33", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*6,R-73*2,R-27R*2,ECM", - "name": "RBK-250*6,R-73*2,R-27R*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4", - "name": "R-73*4", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2,R-27ER*6", - "name": "R-73*4,R-27R*2,R-27ER*6", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27ET*2,R-27ER*6,ECM", - "name": "R-73*2,R-27ET*2,R-27ER*6,ECM", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-27ET*2,R-27ER*6", - "name": "R-73*4,R-27ET*2,R-27ER*6", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*6,R-73*2,R-27R*2,ECM", - "name": "FAB-250*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27R*2,R-27ER*6,ECM", - "name": "R-73*2,R-27R*2,R-27ER*6,ECM", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-73*2,R-27R*2,ECM", - "name": "BetAB-500*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-73*2,R-27R*2,ECM", - "name": "RBK-500AO*6,R-73*2,R-27R*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-13*4,FAB-250*4,R-73*2,ECM", - "name": "UB-13*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-25*4,FAB-250*4,R-73*2,ECM", - "name": "S-25*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,R-27R*2,ECM", - "name": "FAB-500*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*4,FAB-250*4,R-73*2,ECM", - "name": "B-8*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 4 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*4,FAB-500*4,R-73*4", - "name": "S-25*4,FAB-500*4,R-73*4", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + FAB500", - "name": "CAS S-8KOM rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP rockets + FAB500", - "name": "CAS S-8OFP rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets + FAB500", - "name": "CAS S-13 Rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets + FAB100", - "name": "CAS S-13 Rockets + FAB100", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + FAB250", - "name": "CAS S-8KOM rockets + FAB250", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-25 Rockets + FAB500", - "name": "CAS S-25 Rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + RBK500 PTAB10", - "name": "CAS S-8KOM rockets + RBK500 PTAB10", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + RBK500 PTAB1", - "name": "CAS S-8KOM rockets + RBK500 PTAB1", - "roles": [ - "CAS" - ] - } - ], - "filename": "su-34.png", - "enabled": true, - "liveries": { - "t-10k-9 test paint scheme": { - "name": "t-10k-9 test paint scheme", - "countries": [ - "RUS" - ] - }, - "279th kiap 1st squad navy": { - "name": "Navy, 279th kiap, 1st squad", - "countries": [ - "RUS" - ] - }, - "aaf blue 68": { - "name": "Algerian AF BLUE No 68", - "countries": [ - "DZA" - ] - }, - "haf - aegean ghost": { - "name": "Hellenic Airforce - Aegean Ghost (Fictional)", - "countries": [ - "GRC" - ] - }, - "279th kiap 2nd squad syria 2017": { - "name": "Syria 2017, 279th kiap, 2nd squad", - "countries": [ - "RUS" - ] - }, - "aaf grey 12": { - "name": "Algerian AF GREY No 12", - "countries": [ - "DZA" - ] - }, - "t-10k-5 test paint scheme": { - "name": "t-10k-5 test paint scheme", - "countries": [ - "RUS" - ] - }, - "279th kiap 1st squad syria 2017": { - "name": "Syria 2017, 279th kiap, 1st squad", - "countries": [ - "RUS" - ] - }, - "279th kiap 2nd squad navy": { - "name": "Navy, 279th kiap, 2nd squad", - "countries": [ - "RUS" - ] - }, - "t-10k-1 test paint scheme": { - "name": "t-10k-1 test paint scheme", - "countries": [ - "SUN", - "RUS" - ] - }, - "plan carrier air wings j-15": { - "name": "PLAN Carrier Air Wings J-15", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-34": { - "name": "Su-34", - "coalition": "red", - "label": "Su-34 Hellduck", - "era": "Modern", - "shortLabel": "S34", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-13*4,FAB-250*4,R-73*2,ECM", - "name": "UB-13*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-100*28,R-73*2,ECM", - "name": "FAB-100*28,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*8,R-73*2,ECM", - "name": "BetAB-500*8,R-73*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*4,R-73*2,R-77*2,ECM", - "name": "Kh-29L*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*4,R-73*2,R-77*2,ECM", - "name": "KAB-500*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", - "name": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*8,R-73*2,ECM", - "name": "FAB-250*8,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*4,R-73*2,R-77*2,ECM", - "name": "Kh-29T*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500 PTAB-10-5*8,R-73*2,ECM", - "name": "RBK-500 PTAB-10-5*8,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", - "quantity": 3 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-1500*3,R-73*2,R-77*2,ECM", - "name": "FAB-1500*3,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-59M*2,R-73*2,R-77*2,ECM", - "name": "Kh-59M*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*6,R-73*2,R-27R*2,ECM", - "name": "B-8*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*8,R-73*2,ECM", - "name": "FAB-500*8,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "KAB-1500L - 1500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-1500*2,R-73*2,R-77*2,ECM", - "name": "KAB-1500*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*4,R-73*2,R-27R*2,ECM", - "name": "Kh-29T*4,R-73*2,R-27R*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 4 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31A*4,Kh-31P*2,R-73*2,R-27R*2,ECM", - "name": "Kh-31A*4,Kh-31P*2,R-73*2,R-27R*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 6 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31A*6,R-73*2,R-27R*2,ECM", - "name": "Kh-31A*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31P*4,R-73*2,R-27R*2,ECM", - "name": "Kh-31P*4,R-73*2,R-27R*2,ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*4,R-73*2,R-27R*2,ECM", - "name": "Kh-29L*4,R-73*2,R-27R*2,ECM", - "roles": [ - "CAS" - ] - } - ], - "filename": "su-34.png", - "enabled": true, - "liveries": { - "russian air force": { - "name": "1 Russian Air Force", - "countries": [ - "RUS" - ] - }, - "russian air force old": { - "name": "Russian Air Force Old", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 2 crew, all weather fighter and strike. Fullback", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tornado GR4": { - "name": "Tornado GR4", - "coalition": "blue", - "label": "Tornado GR4", - "era": "Late Cold War", - "shortLabel": "GR4", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M*2, Fuel*2, ECM", - "name": "AIM-9M*2, Fuel*2, ECM", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "ALARM", - "quantity": 4 - }, - { - "name": "", - "quantity": 4 - } - ], - "enabled": true, - "code": "ALARM*4, Fuel*2, ECM", - "name": "ALARM*4, Fuel*2, ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", - "name": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", - "roles": [ - "Strike", - "FAC-A", - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BL-755 CBU - 450kg, 147 Frag/Pen bomblets", - "quantity": 4 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "BL755*4, AIM-9M*2, Fuel*2, ECM", - "name": "BL755*4, AIM-9M*2, Fuel*2, ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Sea Eagle*2, AIM-9M*2, Fuel*2, ECM", - "name": "Sea Eagle*2, AIM-9M*2, Fuel*2, ECM", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "tornado.png", - "enabled": true, - "liveries": { - "no. 14 squadron raf lossiemouth ab (morayshire)": { - "name": "no. 14 squadron raf lossiemouth ab (morayshire)", - "countries": [ - "UK" - ] - }, - "o of ii (ac) squadron raf marham": { - "name": "o of ii (ac) squadron raf marham", - "countries": [ - "UK" - ] - }, - "bb of 14 squadron raf lossiemouth": { - "name": "bb of 14 squadron raf lossiemouth", - "countries": [ - "UK" - ] - }, - "no. 9 squadron raf marham ab (norfolk)": { - "name": "no. 9 squadron raf marham ab (norfolk)", - "countries": [ - "UK" - ] - }, - "no. 12 squadron raf lossiemouth ab (morayshire)": { - "name": "no. 12 squadron raf lossiemouth ab (morayshire)", - "countries": [ - "UK" - ] - }, - "no. 617 squadron raf lossiemouth ab (morayshire)": { - "name": "no. 617 squadron raf lossiemouth ab (morayshire)", - "countries": [ - "UK" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swing wing, 2 crew, all weather strike.", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tornado IDS": { - "name": "Tornado IDS", - "coalition": "blue", - "label": "Tornado IDS", - "era": "Late Cold War", - "shortLabel": "IDS", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Kormoran - ASM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kormoran*2,AIM-9*2,Fuel*2", - "name": "Kormoran*2,AIM-9*2,Fuel*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-16*2,AIM-9*2,Fuel*2", - "name": "GBU-16*2,AIM-9*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel*2", - "name": "Fuel*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-88*4,AIM-9*2,ECM", - "name": "AGM-88*4,AIM-9*2,ECM", - "roles": [ - "SEAD", - "CAS" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-88*2,AIM-9*2,Fuel*2,ECM", - "name": "AGM-88*2,AIM-9*2,Fuel*2,ECM", - "roles": [ - "SEAD", - "CAS" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "Kormoran - ASM", - "quantity": 4 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kormoran*4,AIM-9*2", - "name": "Kormoran*4,AIM-9*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Kormoran - ASM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kormoran*2,AIM-9*2,AGM-88*2", - "name": "Kormoran*2,AIM-9*2,AGM-88*2", - "roles": [ - "Antiship Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82*4,AIM-9*2,Fuel*2", - "name": "Mk-82*4,AIM-9*2,Fuel*2", - "roles": [ - "Strike" - ] - } - ], - "filename": "tornado.png", - "enabled": true, - "liveries": { - "ita tornado black": { - "name": "Tornado Black", - "countries": [ - "ITA" - ] - }, - "marinefliegergeschwader 2 eggebek ab marineflieger": { - "name": "marinefliegergeschwader 2 eggebek ab marineflieger", - "countries": [ - "GER" - ] - }, - "jagdbombergeschwader 31 `boelcke` norvenich ab luftwaffe": { - "name": "jagdbombergeschwader 31 `boelcke` norvenich ab luftwaffe", - "countries": [ - "GER" - ] - }, - "ita tornado mm7042": { - "name": "Tornado MM7042", - "countries": [ - "ITA" - ] - }, - "ita tornado mm55004": { - "name": "Tornado MM55004", - "countries": [ - "ITA" - ] - }, - "aufklarungsgeschwader 51 `immelmann` jagel ab luftwaffe": { - "name": "aufklarungsgeschwader 51 `immelmann` jagel ab luftwaffe", - "countries": [ - "GER" - ] - }, - "jagdbombergeschwader 33 buchel ab no. 43+19 experimental scheme": { - "name": "jagdbombergeschwader 33 buchel ab no. 43+19 experimental scheme", - "countries": [ - "GER" - ] - }, - "jagdbombergeschwader 32 lechfeld ab luftwaffe": { - "name": "jagdbombergeschwader 32 lechfeld ab luftwaffe", - "countries": [ - "GER" - ] - }, - "ita tornado (sesto stormo diavoli rossi)": { - "name": "Tornado (Sesto Stormo Diavoli Rossi)", - "countries": [ - "ITA" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swing wing, 2 crew, all weather strike.", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tu-142": { - "name": "Tu-142", - "coalition": "red", - "label": "Tu-142 Bear", - "era": "Mid Cold War", - "shortLabel": "142", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "6 x Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-35*6", - "name": "Kh-35*6", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "tu-95.png", - "enabled": true, - "liveries": { - "af standard": { - "name": "af standard", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 turboprop, swept wing, 11 crew, bomber. Bear", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tu-160": { - "name": "Tu-160", - "coalition": "red", - "label": "Tu-160 Blackjack", - "era": "Late Cold War", - "shortLabel": "160", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "6 x Kh-65 (AS-15B Kent) - 1250kg, ASM, IN & MCC", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-65*12", - "name": "Kh-65*12", - "roles": [ - "Strike" - ] - } - ], - "filename": "tu-160.png", - "enabled": true, - "liveries": { - "af standard": { - "name": "af standard", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swing wing, 4 crew bomber. Blackjack", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tu-22M3": { - "name": "Tu-22M3", - "coalition": "red", - "label": "Tu-22M3 Backfire", - "era": "Late Cold War", - "shortLabel": "T22", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-22N", - "name": "Kh-22N", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-22N*2", - "name": "Kh-22N*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "MBD3-U9M with 9 x FAB-250 - 250kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "33 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*69", - "name": "FAB-250*69", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "33 x FAB-500 M-62 - 500kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*33", - "name": "FAB-500*33", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "MBD3-U9M with 9 x FAB-250 - 250kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "33 x FAB-500 M-62 - 500kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*33, FAB-250*36", - "name": "FAB-500*33, FAB-250*36", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "33 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*33", - "name": "FAB-250*33", - "roles": [ - "Strike", - "Runway Attack" - ] - } - ], - "filename": "tu-22.png", - "enabled": true, - "liveries": { - "af standard": { - "name": "af standard", - "countries": [ - "UKR", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swing wing, 4 crew bomber. Backfire", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tu-95MS": { - "name": "Tu-95MS", - "coalition": "red", - "label": "Tu-95MS Bear", - "era": "Mid Cold War", - "shortLabel": "T95", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "6 x Kh-65 (AS-15B Kent) - 1250kg, ASM, IN & MCC", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-65*6", - "name": "Kh-65*6", - "roles": [ - "Strike" - ] - } - ], - "filename": "tu-95.png", - "enabled": true, - "liveries": { - "af standard": { - "name": "af standard", - "countries": [ - "UKR", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 turboprop, swept wing, 6 crew, bomber. Bear", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-15ESE": { - "name": "F-15ESE", - "coalition": "", - "label": "F-15E Strike Eagle", - "shortLabel": "15E", - "era": "", - "enabled": true, - "loadouts": [ - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "BDU-50LGB * 2", - "quantity": 2 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", - "name": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "Mk-82 * 6", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", - "name": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Fuel tank 610 gal", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BLU-107 * 6", - "quantity": 2 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C x 2, AIM-9M x 2, BLU-107 x 12, TGP, NVP, Fuel Tank", - "name": "AIM-120C x 2, AIM-9M x 2, BLU-107 x 12, TGP, NVP, Fuel Tank", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-12 * 4", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "GBU-10 * 2", - "quantity": 1 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", - "name": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-12 * 4", - "quantity": 2 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 9, TGP, NVP, FUel Tank x 2", - "name": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 9, TGP, NVP, FUel Tank x 2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", - "name": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 3 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 AIR * 6", - "quantity": 2 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", - "name": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", - "name": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "CBU-87 * 6", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M x 4, AIM-120C x 2, CBU-87 x 6, TGP", - "name": "AIM-9M x 4, AIM-120C x 2, CBU-87 x 6, TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-7MH Sparrow Semi-Active Radar", - "quantity": 2 - }, - { - "name": "Mk-20 Rockeye * 6", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, AIM-7M x 2, Mk-20 x 2, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, AIM-7M x 2, Mk-20 x 2, NVP, Fuel Tanks x 2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "CBU-87 * 3", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", - "name": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "Mk-20 Rockeye * 6", - "quantity": 2 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Mk-82 * 6", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "CBU-97 * 3", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", - "name": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 3 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "CATM-9M x 3, AIM-120B", - "name": "CATM-9M x 3, AIM-120B", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "CATM-9M, CAIM-120", - "name": "CATM-9M, CAIM-120", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "", - "quantity": 3 - } - ], - "enabled": true, - "code": "Clean", - "name": "Clean", - "roles": [] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - } - ], - "filename": "f-15.png", - "liveries": { - "usaf 334th eagles fs af89 aim high": { - "name": "USAF 334th Eagles AF89-475 'Aim High'", - "countries": [ - "USA" - ] - }, - "usaf 335th chiefs fs af89 low vis combat": { - "name": "USAF 335th Chiefs AF89 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91 low vis combat": { - "name": "USAF 492nd Madhatters AF91 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 335th chiefs fs af89 high vis clean": { - "name": "USAF 335th Chiefs AF89 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 335th chiefs fs af89-0487 lucky": { - "name": "USAF 335th Chiefs AF89-0487 'Lucky'", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88-1690 darkness falls": { - "name": "USAF 336th Rocketeers AF88-1690 'Darkness Falls'", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af92-366 billy the kid": { - "name": "USAF 391st Bold Tigers AF92-366 'Billy the Kid'", - "countries": [ - "USA" - ] - }, - "idf ra'am, 69 hammer sqn": { - "name": "IDF 69th Hammers Scheme B", - "countries": [ - "ISR" - ] - }, - "usaf 336th rocketeers fs af89 high vis clean": { - "name": "USAF 336th Rocketeers AF89 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af89-496 shadow": { - "name": "USAF 336th Rocketeers AF89-496 'Shadow'", - "countries": [ - "USA" - ] - }, - "usaf 389th thunderbolts fs af90 low vis combat": { - "name": "USAF 389th Thunderbolts AF90 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd mad hatters fs 97-219 75th d-day anniversary": { - "name": "USAF 492nd Madhatters AF97-219 '75th Anniversary D-Day'", - "countries": [ - "USA" - ] - }, - "usaf 334th eagles fs af89 high vis clean": { - "name": "USAF 334th Eagles AF89 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af91-300 leo": { - "name": "USAF 391st Bold Tigers AF91-300 'Leo'", - "countries": [ - "USA" - ] - }, - "usaf 494th panthers fs af01 low vis clean": { - "name": "USAF 494th Panthers AF01 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af97-220 thanos": { - "name": "USAF 492nd Madhatters AF97-220 'Thanos'", - "countries": [ - "USA" - ] - }, - "usaf 48th fw 70th anniversary af92-364 heritage": { - "name": "USAF 48th FW 70th Aniversary AF92-364 Heritage", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88 low vis combat": { - "name": "USAF 336th Rocketeers AF88 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af97-221 low vis combat": { - "name": "USAF 492nd Madhatters AF97-221 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91-315 vader": { - "name": "USAF 492nd Madhatters AF91-315 'Vader'", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91-327 green goblin": { - "name": "USAF 492nd Madhatters AF91-327 'Green Goblin'", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af90-247 kraken": { - "name": "USAF 391st Bold Tigers AF90-247 'kraken'", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88-1700 dragon betty": { - "name": "USAF 336th Rocketeers AF88-1700 'Dragon Betty'", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af89-501": { - "name": "USAF 336th Rocketeers AF89-501", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88 high vis clean": { - "name": "USAF 336th Rocketeers AF88 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 333rd rocketeers fs af87-199 333 fgs": { - "name": "USAF 333rd Lancers AF87-0199 333 FGS", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af90-241 high vis combat": { - "name": "USAF 391st Bold Tigers AF90-241 High Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af96 low vis clean": { - "name": "USAF 492nd Madhatters AF96 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 494th panthers fs af00 low vis combat": { - "name": "USAF 494th Panthers AF00 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91 low vis clean": { - "name": "USAF 492nd Madhatters AF91 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 494th panthers fs af01 low vis combat": { - "name": "USAF 494th Panthers AF01 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af98 low vis clean": { - "name": "USAF 492nd Madhatters AF98 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 17th ws af90 low vis clean": { - "name": "USAF 17th Weapons Squadron AF90 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88-1673 336 fgs": { - "name": "USAF 336th Rocketeers AF88-1673 336 FGS", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af89 low vis combat": { - "name": "USAF 336th Rocketeers AF89 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91-308 low vis clean": { - "name": "USAF 492nd Madhatters AF91-308 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af98 low vis combat": { - "name": "USAF 492nd Madhatters AF98 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers af90-250 tmota": { - "name": "USAF 391ST Bold Tigers 2005 Tiger Meet of the Americas", - "countries": [ - "USA" - ] - }, - "usaf af86-183 number1": { - "name": "USAF Test AF86-183 'Number 1'", - "countries": [ - "USA" - ] - }, - "usaf 17th wps af90-257": { - "name": "USAF 17th Weapons Squadron AF90-257 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 17th ws af90 high vis clean": { - "name": "USAF 17th Weapons Squadron AF90 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af96 low vis combat": { - "name": "USAF 492nd Madhatters AF96 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af90 low vis combat": { - "name": "USAF 391st Bold Tigers AF90 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 494th panthers fs 91-603 75th d-day anniversary": { - "name": "USAF 494th Panthers AF91-603 '75th Anniversary D-Day'", - "countries": [ - "USA" - ] - }, - "usaf 336th fw mountain home 75 years af87-173": { - "name": "USAF 366th FW 'Mountain Home 75 Years' AF87-0173", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88-1687 mad duck iv": { - "name": "USAF 336th Rocketeers AF88-1687 'Mad Duck IV'", - "countries": [ - "USA" - ] - } - } - }, - "F-14A": { - "name": "F-14A", - "coalition": "", - "era": "", - "label": "F-14A Tomcat", - "shortLabel": "F14", - "type": "F_14A", - "enabled": false, - "liveries": {} - }, - "Su-25TM": { - "name": "Su-25TM", - "coalition": "", - "era": "", - "label": "SU-25TM", - "shortLabel": "S25", - "type": "Su_25TM", - "enabled": false, - "liveries": {} - }, - "Su-24MR": { - "name": "Su-24MR", - "coalition": "", - "era": "", - "label": "Su-24MR Fencer", - "shortLabel": "S24", - "type": "Su_24MR", - "enabled": false, - "liveries": {} - }, - "S-3B": { - "name": "S-3B", - "coalition": "", - "era": "", - "label": "S-3B", - "shortLabel": "S3B", - "type": "S_3B", - "enabled": false, - "liveries": {} - }, - "Mirage 2000-5": { - "name": "Mirage 2000-5", - "coalition": "", - "era": "", - "label": "MIRAGE 2000-5", - "shortLabel": "M2k", - "type": "Mirage_2000_5", - "enabled": false, - "liveries": {} - }, - "F-15E": { - "name": "F-15E", - "coalition": "", - "era": "", - "label": "F-15E Strike Eagle", - "shortLabel": "15E", - "type": "F_15E", - "enabled": false, - "liveries": {} - }, - "MiG-29G": { - "name": "MiG-29G", - "coalition": "", - "era": "", - "label": "MiG-29G Fulcrum", - "shortLabel": "M29", - "type": "MiG_29G", - "enabled": false, - "liveries": {} - }, - "F-16C bl.50": { - "name": "F-16C bl.50", - "coalition": "", - "era": "", - "label": "F-16C Viper Block 50", - "shortLabel": "16C", - "type": "F_16C_bl_50", - "enabled": false, - "liveries": {} - }, - "F-16C bl.52d": { - "name": "F-16C bl.52d", - "coalition": "", - "era": "", - "label": "F-16C BL.52D", - "shortLabel": "16C", - "type": "F_16C_bl_52d", - "enabled": false, - "liveries": {} - }, - "F-16A": { - "name": "F-16A", - "coalition": "", - "era": "", - "label": "F-16A Viper", - "shortLabel": "16A", - "type": "F_16A", - "enabled": false, - "liveries": {} - }, - "F-16A MLU": { - "name": "F-16A MLU", - "coalition": "", - "era": "", - "label": "F-16A Viper MLU", - "shortLabel": "16A", - "type": "F_16A_MLU", - "enabled": false, - "liveries": {} - }, - "RQ-1A Predator": { - "name": "RQ-1A Predator", - "coalition": "", - "era": "", - "label": "RQ-1A PREDATOR", - "shortLabel": "RQ1", - "type": "RQ_1A_Predator", - "enabled": false, - "liveries": {} - }, - "Yak-40": { - "name": "Yak-40", - "coalition": "", - "era": "", - "label": "YAK-40", - "shortLabel": "40", - "type": "Yak_40", - "enabled": false, - "liveries": {} - }, - "SpitfireLFMkIX": { - "name": "SpitfireLFMkIX", - "coalition": "blue", - "era": "WW2", - "label": "Spitfire Mk 9", - "shortLabel": "Spit", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Torpedo Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank (Torpedo)", - "name": "Fuel Tank (Torpedo)", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "Slipper Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank (Slipper)", - "name": "Fuel Tank (Slipper)", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "GP 250", - "quantity": 2 - } - ], - "enabled": true, - "code": "GP 250", - "name": "GP 250", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GP 500", - "quantity": 1 - } - ], - "enabled": true, - "code": "GO 500", - "name": "GP 500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - } - ], - "type": "SpitfireLFMkIX", - "enabled": true, - "liveries": { - "441 9g-q": { - "name": "441 RCAF 9G-Q", - "countries": [ - "CAN", - "UK" - ] - }, - "ussr 26th gviap, pvo": { - "name": "USSR 26th GvIAP, PVO", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf standard": { - "name": "RAF standard", - "countries": [ - "UK" - ] - }, - "ussr_3rd_ae_57th_gviap": { - "name": "USSR 3rd AE, 57th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf 2 taf, sept 1944": { - "name": "RAF, 2nd Tactical Air Force, September 1944", - "countries": [ - "UK" - ] - }, - "ussr spitfire 57th gviap": { - "name": "USSR 57th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf 2 taf, july 1944": { - "name": "RAF, 2nd Tactical Air Force, July 1944", - "countries": [ - "UK" - ] - }, - "raf, no. 16 squadron": { - "name": "RAF, No.16 Squadron", - "countries": [ - "UK" - ] - }, - "ussr pilot lt. col. v. a. matsiyevitch, 26th gviap": { - "name": "USSR Lt.Col. V.A. Matsiyevitch, 26th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf, no. 126 squadron, harrowbeer": { - "name": "RAF, No.126 Squadron", - "countries": [ - "UK" - ] - }, - "raf 2 taf, june 1944": { - "name": "RAF, 2nd Tactical Air Force, June 1944", - "countries": [ - "UK" - ] - }, - "403 rcaf beurling": { - "name": "403 RCAF Beurling", - "countries": [ - "CAN", - "UK" - ] - }, - "raf, no. 145 squadron": { - "name": "RAF, No.145 Squadron", - "countries": [ - "UK" - ] - } - }, - "filename": "spitfire.png", - "description": "Single propellor, straight wing, 1 crew. Spitfire." - }, - "SpitfireLFMkIXCW": { - "name": "SpitfireLFMkIXCW", - "coalition": "blue", - "era": "WW2", - "label": "Spitfire Mk 9 CW", - "shortLabel": "Spit", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Torpedo Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank (Torpedo)", - "name": "Fuel Tank (Torpedo)", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "Slipper Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank (Slipper)", - "name": "Fuel Tank (Slipper)", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "GP 250", - "quantity": 2 - } - ], - "enabled": true, - "code": "GP 250", - "name": "GP 250", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GP 500", - "quantity": 1 - } - ], - "enabled": true, - "code": "GO 500", - "name": "GP 500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - } - ], - "type": "SpitfireLFMkIXCW", - "enabled": true, - "liveries": { - "441 9g-q": { - "name": "441 RCAF 9G-Q", - "countries": [ - "CAN", - "UK" - ] - }, - "ussr 26th gviap, pvo": { - "name": "USSR 26th GvIAP, PVO", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf standard": { - "name": "RAF standard", - "countries": [ - "UK" - ] - }, - "ussr_3rd_ae_57th_gviap": { - "name": "USSR 3rd AE, 57th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf 2 taf, sept 1944": { - "name": "RAF, 2nd Tactical Air Force, September 1944", - "countries": [ - "UK" - ] - }, - "ussr spitfire 57th gviap": { - "name": "USSR 57th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf 2 taf, july 1944": { - "name": "RAF, 2nd Tactical Air Force, July 1944", - "countries": [ - "UK" - ] - }, - "raf, no. 16 squadron": { - "name": "RAF, No.16 Squadron", - "countries": [ - "UK" - ] - }, - "ussr pilot lt. col. v. a. matsiyevitch, 26th gviap": { - "name": "USSR Lt.Col. V.A. Matsiyevitch, 26th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf, no. 126 squadron, harrowbeer": { - "name": "RAF, No.126 Squadron", - "countries": [ - "UK" - ] - }, - "raf 2 taf, june 1944": { - "name": "RAF, 2nd Tactical Air Force, June 1944", - "countries": [ - "UK" - ] - }, - "403 rcaf beurling": { - "name": "403 RCAF Beurling", - "countries": [ - "CAN", - "UK" - ] - }, - "raf, no. 145 squadron": { - "name": "RAF, No.145 Squadron", - "countries": [ - "UK" - ] - } - }, - "filename": "spitfire.png", - "description": "Single propellor, straight wing, 1 crew. Spitfire with clipped wingtips.." - }, - "P-51D": { - "name": "P-51D", - "coalition": "", - "era": "", - "label": "P-51D Mustang", - "shortLabel": "P51", - "type": "P_51D", - "enabled": false, - "liveries": {} - }, - "P-47D-30": { - "name": "P-47D-30", - "coalition": "", - "era": "", - "label": "P-47D-30", - "shortLabel": "P47", - "type": "P_47D_30", - "enabled": false, - "liveries": {} - }, - "P-47D-30bl1": { - "name": "P-47D-30bl1", - "coalition": "", - "era": "", - "label": "P-47D-30", - "shortLabel": "P47", - "type": "P_47D_30bl1", - "enabled": false, - "liveries": {} - }, - "A-10A": { - "name": "A-10A", - "coalition": "", - "era": "", - "label": "A-10A Warthog", - "shortLabel": "A10", - "type": "A_10A", - "enabled": false, - "liveries": {} - }, - "A-10C": { - "name": "A-10C", - "coalition": "", - "era": "", - "label": "A-10C Warthog", - "shortLabel": "A10", - "type": "A_10C", - "enabled": false, - "liveries": {} - }, - "KC130": { - "name": "KC130", - "coalition": "", - "era": "", - "label": "KC130", - "shortLabel": "130", - "type": "KC130", - "enabled": false, - "liveries": {} - }, - "C-101EB": { - "name": "C-101EB", - "coalition": "", - "era": "", - "label": "C-101EB", - "shortLabel": "C-101EB", - "type": "C_101EB", - "enabled": false, - "liveries": {} - }, - "KJ-2000": { - "name": "KJ-2000", - "coalition": "", - "era": "", - "label": "KJ-2000", - "shortLabel": "KJ-2000", - "type": "KJ_2000", - "enabled": false, - "liveries": {} - }, - "WingLoong-I": { - "name": "WingLoong-I", - "coalition": "", - "era": "", - "label": "MQ-9 Reaper", - "shortLabel": "MQ9", - "type": "WingLoong_I", - "enabled": false, - "liveries": {} - }, - "Christen Eagle II": { - "name": "Christen Eagle II", - "coalition": "", - "era": "", - "label": "CHRISTEN EAGLE II", - "shortLabel": "CE2", - "type": "Christen_Eagle_II", - "enabled": false, - "liveries": {} - }, - "F-5E": { - "name": "F-5E", - "coalition": "", - "era": "", - "label": "F-5E", - "shortLabel": "5E", - "type": "F_5E", - "enabled": false, - "liveries": {} - }, - "F/A-18A": { - "name": "F/A-18A", - "coalition": "", - "era": "", - "label": "F/A-18A", - "shortLabel": "18A", - "type": "F_A_18A", - "enabled": false, - "liveries": {} - }, - "F/A-18C": { - "name": "F/A-18C", - "coalition": "", - "era": "", - "label": "F/A-18C", - "shortLabel": "18C", - "type": "F_A_18C", - "enabled": false, - "liveries": {} - }, - "Hawk": { - "name": "Hawk", - "coalition": "", - "era": "", - "label": "Hawk", - "shortLabel": "Hk", - "type": "Hawk", - "enabled": false, - "liveries": {} - }, - "L-39C": { - "name": "L-39C", - "coalition": "", - "era": "", - "label": "L-39C", - "shortLabel": "L39C", - "type": "L_39C", - "enabled": false, - "liveries": {} - }, - "MB-339APAN": { - "name": "MB-339APAN", - "coalition": "", - "era": "", - "label": "MB-339APAN", - "shortLabel": "339", - "type": "MB_339APAN", - "enabled": false, - "liveries": {} - }, - "Mirage-F1C": { - "name": "Mirage-F1C", - "coalition": "", - "era": "", - "label": "MIRAGE-F1C", - "shortLabel": "MF1", - "type": "Mirage_F1C", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CE": { - "name": "Mirage-F1CE", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CE", - "shortLabel": "MF1", - "type": "Mirage_F1CE", - "enabled": false, - "liveries": {} - }, - "Mirage-F1M-EE": { - "name": "Mirage-F1M-EE", - "coalition": "", - "era": "", - "label": "MIRAGE-F1M-EE", - "shortLabel": "MF1", - "type": "Mirage_F1M_EE", - "enabled": false, - "liveries": {} - }, - "Mirage-F1M-CE": { - "name": "Mirage-F1M-CE", - "coalition": "", - "era": "", - "label": "MIRAGE-F1M-CE", - "shortLabel": "MF1", - "type": "Mirage_F1M_CE", - "enabled": false, - "liveries": {} - }, - "Mirage-F1C-200": { - "name": "Mirage-F1C-200", - "coalition": "", - "era": "", - "label": "MIRAGE-F1C-200", - "shortLabel": "MF1", - "type": "Mirage_F1C_200", - "enabled": false, - "liveries": {} - }, - "Mirage-F1EH": { - "name": "Mirage-F1EH", - "coalition": "", - "era": "", - "label": "MIRAGE-F1EH", - "shortLabel": "MF1", - "type": "Mirage_F1EH", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CH": { - "name": "Mirage-F1CH", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CH", - "shortLabel": "MF1", - "type": "Mirage_F1CH", - "enabled": false, - "liveries": {} - }, - "Mirage-F1JA": { - "name": "Mirage-F1JA", - "coalition": "", - "era": "", - "label": "MIRAGE-F1JA", - "shortLabel": "MF1", - "type": "Mirage_F1JA", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CG": { - "name": "Mirage-F1CG", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CG", - "shortLabel": "MF1", - "type": "Mirage_F1CG", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CZ": { - "name": "Mirage-F1CZ", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CZ", - "shortLabel": "MF1", - "type": "Mirage_F1CZ", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CJ": { - "name": "Mirage-F1CJ", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CJ", - "shortLabel": "MF1", - "type": "Mirage_F1CJ", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CK": { - "name": "Mirage-F1CK", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CK", - "shortLabel": "MF1", - "type": "Mirage_F1CK", - "enabled": false, - "liveries": {} - }, - "Mirage-F1EQ": { - "name": "Mirage-F1EQ", - "coalition": "", - "era": "", - "label": "MIRAGE-F1EQ", - "shortLabel": "MF1", - "type": "Mirage_F1EQ", - "enabled": false, - "liveries": {} - }, - "Mirage-F1ED": { - "name": "Mirage-F1ED", - "coalition": "", - "era": "", - "label": "MIRAGE-F1ED", - "shortLabel": "MF1", - "type": "Mirage_F1ED", - "enabled": false, - "liveries": {} - }, - "Mirage-F1EDA": { - "name": "Mirage-F1EDA", - "coalition": "", - "era": "", - "label": "MIRAGE-F1EDA", - "shortLabel": "MF1", - "type": "Mirage_F1EDA", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CR": { - "name": "Mirage-F1CR", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CR", - "shortLabel": "MF1", - "type": "Mirage_F1CR", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CT": { - "name": "Mirage-F1CT", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CT", - "shortLabel": "MF1", - "type": "Mirage_F1CT", - "enabled": false, - "liveries": {} - }, - "Mirage-F1B": { - "name": "Mirage-F1B", - "coalition": "", - "era": "", - "label": "MIRAGE-F1B", - "shortLabel": "MF1", - "type": "Mirage_F1B", - "enabled": false, - "liveries": {} - }, - "Mirage-F1BE": { - "name": "Mirage-F1BE", - "coalition": "", - "era": "", - "label": "MIRAGE-F1BE", - "shortLabel": "MF1", - "type": "Mirage_F1BE", - "enabled": false, - "liveries": {} - }, - "Mirage-F1BQ": { - "name": "Mirage-F1BQ", - "coalition": "", - "era": "", - "label": "MIRAGE-F1BQ", - "shortLabel": "MF1", - "type": "Mirage_F1BQ", - "enabled": false, - "liveries": {} - }, - "Mirage-F1BD": { - "name": "Mirage-F1BD", - "coalition": "", - "era": "", - "label": "MIRAGE-F1BD", - "shortLabel": "MF1", - "type": "Mirage_F1BD", - "enabled": false, - "liveries": {} - }, - "Mirage-F1DDA": { - "name": "Mirage-F1DDA", - "coalition": "", - "era": "", - "label": "MIRAGE-F1DDA", - "shortLabel": "MF1", - "type": "Mirage_F1DDA", - "enabled": false, - "liveries": {} - }, - "Yak-52": { - "name": "Yak-52", - "coalition": "", - "era": "", - "label": "YAK-52", - "shortLabel": "52", - "type": "Yak_52", - "enabled": false, - "liveries": {} - }, - "B-17G": { - "name": "B-17G", - "coalition": "", - "era": "", - "label": "B-17G Flying Fortress", - "shortLabel": "B17", - "type": "B_17G", - "enabled": false, - "liveries": {} - }, - "Ju-88A4": { - "name": "Ju-88A4", - "coalition": "", - "era": "", - "label": "JU-88 A4", - "shortLabel": "Ju88", - "type": "Ju_88A4", - "enabled": false, - "liveries": {} - }, - "C-47": { - "name": "C-47", - "coalition": "", - "era": "", - "label": "C-47 Dakota", - "shortLabel": "C47", - "type": "C_47", - "enabled": false, - "liveries": {} - }, - "TF-51D": { - "name": "TF-51D", - "coalition": "", - "era": "", - "label": "TF-51D", - "shortLabel": "T51", - "type": "TF_51D", - "enabled": false, - "liveries": {} - } -} \ No newline at end of file diff --git a/client/public/databases/units/default/groundunitdatabase.json b/client/public/databases/units/default/groundunitdatabase.json deleted file mode 100644 index d51602f7..00000000 --- a/client/public/databases/units/default/groundunitdatabase.json +++ /dev/null @@ -1,10359 +0,0 @@ -{ - "1L13 EWR": { - "name": "1L13 EWR", - "coalition": "red", - "era": "Late Cold War", - "label": "Box Spring 1L13 EWR", - "shortLabel": "Box spring", - "filename": "", - "type": "Radar (EWR)", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 300000, - "engagementRange": 0, - "description": "Box Spring 1L13 early warning radar built on the back of a trailer", - "abilities": "EWR, Radar, Fixed", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-ewr" - }, - "2B11 mortar": { - "name": "2B11 mortar", - "coalition": "red", - "era": "Late Cold War", - "label": "2B11 mortar", - "shortLabel": "2B11 mortar", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 7000, - "engagementRange": 7000, - "description": "120mm mortar. Fixed. 30m min range, 7km max.", - "abilities": "Indirect Fire", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 1, - "muzzleVelocity": 325, - "aimTime": 45, - "shotsToFire": 2, - "markerFile": "groundunit-artillery", - "tags": "120mm", - "indirectFire": true, - "shotsBaseInterval": 10, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "2S6 Tunguska": { - "name": "2S6 Tunguska", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-19 Tunguska", - "shortLabel": "19", - "range": "Short", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 18000, - "engagementRange": 8000, - "description": "SA-19 Tunguska 2K22 optical SAM. Tracked radar 30 mm AAA gun with optically guided (SACLOS) missiles. Range/alt max: 8km, 14,000 ft.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "muzzleVelocity": 1000, - "barrelHeight": 2, - "aimTime": 5, - "shotsToFire": 10, - "cost": null, - "tags": "Optical, Radar, CA", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "", - "canAAA": true - }, - "55G6 EWR": { - "name": "55G6 EWR", - "coalition": "red", - "era": "Late Cold War", - "label": "Tall Rack 55G6 EWR", - "shortLabel": "Tall Rack", - "filename": "", - "type": "Radar (EWR)", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 400000, - "engagementRange": 0, - "description": "Tall rack 55G6 early warning radar built on the back of a trailer", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-ewr" - }, - "5p73 s-125 ln": { - "name": "5p73 s-125 ln", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-3 Launcher", - "shortLabel": "5p73 s-125 ln", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 18000, - "description": "4 SA-3 missiles on a static emplacement. Requires grouping with SA-3 components", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "", - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "SA-3 SAM Battery" - }, - "AAV7": { - "name": "AAV7", - "coalition": "blue", - "era": "Late Cold War", - "label": "AAV7", - "shortLabel": "AAV7", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 1200, - "description": "Amphibious assault vehicle 7. Tracked. Turret mounted 12.7mm machine gun and 40mm grenade launcher.", - "abilities": "Combined arms, Transport, Amphibious", - "canTargetPoint": false, - "canRearm": false, - "barrelHeight": 3, - "muzzleVelocity": 900, - "aimTime": 10, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc" - }, - "ATMZ-5": { - "name": "ATMZ-5", - "coalition": "red", - "era": "Early Cold War", - "label": "ATMZ-5", - "shortLabel": "ATMZ-5 Fuel", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Refueler truck. Wheeled", - "abilities": "Refuel", - "canTargetPoint": false, - "canRearm": false, - "tags": "Military, Refueling, CA", - "markerFile": "groundunit-truck" - }, - "ATZ-10": { - "name": "ATZ-10", - "coalition": "red", - "era": "Early Cold War", - "label": "ATZ-10", - "shortLabel": "ATZ-10 Fuel", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Refueler truck. Wheeled", - "abilities": "Refuel", - "canTargetPoint": false, - "canRearm": false, - "tags": "Military, Refueling, FARP", - "markerFile": "groundunit-truck" - }, - "BMD-1": { - "name": "BMD-1", - "coalition": "red", - "era": "Mid Cold War", - "label": "BMD-1", - "shortLabel": "BMD-1", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "iran - camo": { - "name": "IRAN - camo", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "barrelHeight": 1.95, - "muzzleVelocity": 665, - "acquisitionRange": 3500, - "engagementRange": 1000, - "description": "BMD-1 IFV. Tracked. Amphibious. 73 mm gun, AT-3 Sagger wire guided missile.", - "abilities": "Combined arms, Amphibious, Transport", - "canTargetPoint": true, - "canRearm": false, - "shotsToFire": 5, - "aimTime": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 3000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "BMP-1": { - "name": "BMP-1", - "coalition": "red", - "era": "Mid Cold War", - "label": "BMP-1", - "shortLabel": "BMP-1", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grg_summer": { - "name": "GRG_Summer", - "countries": "All" - }, - "grg_autumn": { - "name": "GRG_Autumn", - "countries": "All" - }, - "grg_winter": { - "name": "GRG_Winter", - "countries": "All" - }, - "grg_spring": { - "name": "GRG_Spring", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - } - }, - "acquisitionRange": 3500, - "engagementRange": 1000, - "description": "BMP-1 IFV. Tracked. Amphibious. 73 mm gun, AT-3 Sagger wire guided missile.", - "abilities": "Combined arms, Amphibious, Transport", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 1.95, - "muzzleVelocity": 665, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 3000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "BMP-2": { - "name": "BMP-2", - "coalition": "red", - "era": "Late Cold War", - "label": "BMP-2", - "shortLabel": "BMP-2", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "grg_summer": { - "name": "GRG_Summer", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grg_autumn": { - "name": "GRG_Autumn", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grg_winter": { - "name": "GRG_Winter", - "countries": "All" - }, - "grg_spring": { - "name": "GRG_Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "barrelHeight": 1.95, - "muzzleVelocity": 950, - "acquisitionRange": 3500, - "engagementRange": 1000, - "description": "BMP-2 IFV. Tracked. Amphibious. 30 mm gun, AT-5 Spandrel wire guided missile.", - "abilities": "Combined arms, Amphibious, Transport, AA", - "canTargetPoint": true, - "canRearm": false, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 3000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "indirectFire": false, - "canAAA": true - }, - "BMP-3": { - "name": "BMP-3", - "coalition": "red", - "era": "Late Cold War", - "label": "BMP-3", - "shortLabel": "BMP-3", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "BMP-2 IFV. Tracked. Amphibious. 100 mm gun. 30 mm gun, AT-10 Stabber wire guided missile.", - "abilities": "Combined arms, Amphibious, Transport, AA", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.3, - "muzzleVelocity": 1080, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 3000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "BRDM-2": { - "name": "BRDM-2", - "coalition": "red", - "era": "Mid Cold War", - "label": "BRDM-2", - "shortLabel": "BRDM-2", - "filename": "", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 2500, - "engagementRange": 1000, - "description": "BRDM-2 light armour tactical vehicle. Wheeled. Amphibious. 14.5 mm gun.", - "abilities": "Combined arms, Amphibious, AA", - "canTargetPoint": true, - "canRearm": false, - "muzzleVelocity": 1005, - "barrelHeight": 2.25, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-tactical", - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 6, - "shotsBaseScatter": 10, - "alertnessTimeConstant": 4 - }, - "BTR-80": { - "name": "BTR-80", - "coalition": "red", - "era": "Late Cold War", - "label": "BTR-80", - "shortLabel": "BTR-80", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "light green autumn": { - "name": "Light Green Autumn", - "countries": "All" - }, - "military police autumn": { - "name": "Military Police Autumn", - "countries": "All" - }, - "light green winter": { - "name": "Light Green Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "military police winter": { - "name": "Military Police Winter", - "countries": "All" - }, - "military police spring": { - "name": "Military Police Spring", - "countries": "All" - }, - "light green spring": { - "name": "Light Green Spring", - "countries": "All" - }, - "green autumn": { - "name": "Green_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "green winter": { - "name": "Green_Winter", - "countries": "All" - }, - "military police summer": { - "name": "Military Police Summer", - "countries": "All" - }, - "light green summer": { - "name": "Light_Green_Summer", - "countries": "All" - }, - "green spring": { - "name": "Green_Spring", - "countries": "All" - }, - "green summer": { - "name": "Green_Summer", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "BTR 80 APC. Wheeled. Amphibious. 14.5 mm gun and 7.62 mm coax.", - "abilities": "Combined arms, Amphibious, Transport, AA", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.2, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "BTR_D": { - "name": "BTR_D", - "coalition": "red", - "era": "Mid Cold War", - "label": "BTR_D", - "shortLabel": "BTR_D", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 5000, - "description": "BTR_D. Tracked. Amphibious. AT-5 Spandrel wire guided missile.", - "abilities": "Combined arms, Amphibious, Transport", - "canTargetPoint": false, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-apc" - }, - "Bunker": { - "name": "Bunker", - "coalition": "", - "era": "", - "label": "Bunker", - "shortLabel": "Bunker", - "filename": "", - "type": "Structure", - "enabled": false, - "acquisitionRange": 0, - "engagementRange": 800, - "description": "Concrete bunker. Structure. Fixed Position. Light machine guns.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Challenger2": { - "name": "Challenger2", - "coalition": "blue", - "era": "Late Cold War", - "label": "Challenger 2", - "shortLabel": "Challenger 2", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm rifled main gun (APFSDS and HESH), 7.62 mm coax machine gun.", - "abilities": "Combined arms", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 1.8, - "muzzleVelocity": 1050, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-tank", - "shotsBaseInterval": 6, - "targetingRange": 100, - "aimMethodRange": 3500, - "alertnessTimeConstant": 3, - "shotsBaseScatter": 5 - }, - "Cobra": { - "name": "Cobra", - "coalition": "blue", - "era": "Modern", - "label": "Otokar Cobra", - "shortLabel": "Cobra", - "filename": "", - "type": "Tactical Vehicle", - "enabled": true, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "Armoured car, MRAP. Wheeled. Amphibious. 12.7 mm machine gun.", - "abilities": "Combined arms, Amphibious, AA", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-tactical", - "targetingRange": 100, - "aimMethodRange": 2500, - "shotsBaseInterval": 6, - "shotsBaseScatter": 10, - "alertnessTimeConstant": 4, - "canAAA": true - }, - "Dog Ear radar": { - "name": "Dog Ear radar", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-13 Dog Ear", - "shortLabel": "Dog Ear", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 35000, - "engagementRange": 0, - "description": "9S80-1 Sborka. Tracked. Fire control Radar that can integrate with missile and gun systems.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Search Radar", - "markerFile": "groundunit-sam-radar" - }, - "GAZ-3307": { - "name": "GAZ-3307", - "coalition": "red", - "era": "Early Cold War", - "label": "GAZ-3307", - "shortLabel": "GAZ-3307", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Civilian truck. Wheeled. Single axle", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "GAZ-3308": { - "name": "GAZ-3308", - "coalition": "red", - "era": "Early Cold War", - "label": "GAZ-3308", - "shortLabel": "GAZ-3308", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military truck. Wheeled. Single axle. Canvas covered cargo bay", - "abilities": "Rearm", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck" - }, - "GAZ-66": { - "name": "GAZ-66", - "coalition": "red", - "era": "Early Cold War", - "label": "GAZ-66", - "shortLabel": "GAZ-66", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military truck. Wheeled. Single axle. Open cargo bay", - "abilities": "", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck" - }, - "Gepard": { - "name": "Gepard", - "coalition": "blue", - "era": "Late Cold War", - "label": "Gepard", - "shortLabel": "Gepard", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "barrelHeight": 2.35, - "muzzleVelocity": 1440, - "acquisitionRange": 8000, - "engagementRange": 2000, - "description": "Gepard. Tracked. 35mm radar detection and guided guns.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "aimTime": 8, - "shotsToFire": 5, - "cost": null, - "tags": "Radar, CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "shotsBaseScatter": 5, - "targetingRange": 300, - "aimMethodRange": 6000, - "shotsBaseInterval": 15, - "alertnessTimeConstant": 15 - }, - "Grad-URAL": { - "name": "Grad-URAL", - "coalition": "red", - "era": "Mid Cold War", - "label": "BM-21 Grad", - "shortLabel": "Grad", - "filename": "", - "type": "Artillery", - "enabled": true, - "acquisitionRange": 0, - "engagementRange": 19000, - "description": "BM-21 Grad Wheeled. Multiple launch rocket system, 122mm rockets. 5 km min range, 18 km max.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-artillery", - "tags": "122 mm, MLRS", - "indirectFire": true, - "shotsToFire": 2, - "shotsBaseInterval": 60, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10, - "aimTime": 120 - }, - "HEMTT TFFT": { - "name": "HEMTT TFFT", - "coalition": "blue", - "era": "Late Cold War", - "label": "HEMTT TFFT", - "shortLabel": "HEMTT TFFT", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military Fire truck. Wheeled. ", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "Hawk SAM Battery": { - "name": "Hawk SAM Battery", - "coalition": "blue", - "era": "Mid Cold War", - "label": "Hawk SAM Battery", - "shortLabel": "Hk", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true, - "acquisitionRange": 90000, - "engagementRange": 45000, - "description": "Hawk radar SAM site MIM-23. Range/alt max: 40 km, 60,000 ft. Min: 2km. HAWK stands for 'Homing all the way killer'.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "Hk" - }, - "Hawk cwar": { - "name": "Hawk cwar", - "coalition": "blue", - "era": "Early Cold War", - "label": "Hawk Continous Wave Acquisition Radar", - "shortLabel": "Hawk cwar", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 70000, - "engagementRange": 0, - "description": "Hawk site Aquisition Radar", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "Hawk ln": { - "name": "Hawk ln", - "coalition": "blue", - "era": "Late Cold War", - "label": "Hawk Launcher", - "shortLabel": "Hawk ln", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "xx337 - 92 sqn blue tail": { - "name": "XX337-92Sqn", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-341 grey": { - "name": "HW-341 Grey", - "countries": [ - "FIN" - ] - }, - "xx245 - 2009 raf hawk display": { - "name": "XX245-RAF Hawk Display 2009", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-329 green brown": { - "name": "HW-329 Green Brown", - "countries": [ - "FIN" - ] - }, - "swiss u-1268 - byebyehawk": { - "name": "U-1268 - ByeByeHawk", - "countries": [ - "SUI" - ] - }, - "25th fts, vance afb, oklahoma (vn)": { - "name": "25th FTS, Vance AFB, Oklahoma (VN)", - "countries": [ - "USA" - ] - }, - "xx226 - 74sqn 1992-2000": { - "name": "74Sqn XX226 1992-2000", - "countries": [ - "UK" - ] - }, - "finland hw-373 ex-swiss air force": { - "name": "HW-373 Ex-Swiss Air Force", - "countries": [ - "FIN" - ] - }, - "swiss u-1252 - normal": { - "name": "U-1252 - Normal", - "countries": [ - "SUI" - ] - }, - "swiss u-1270 - wallis": { - "name": "U-1270 - Wallis", - "countries": [ - "SUI" - ] - }, - "1st rs, beale afb, california (bb)": { - "name": "1st RS, Beale AFB, California (BB)", - "countries": [ - "USA" - ] - }, - "xx100 - tfc": { - "name": "The Fighter Collection XX100", - "countries": [ - "UK" - ] - }, - "509th bs, whitman afb, missouri (wm)": { - "name": "509th BS, Whiteman AFB, Missouri (WM)", - "countries": [ - "USA" - ] - }, - "xx218 - 208sqn": { - "name": "208Sqn XX218", - "countries": [ - "UK" - ] - }, - "xx316 - fradu royal navy": { - "name": "Royal Navy XX316", - "countries": [ - "UK" - ] - }, - "usaf aggressor 269": { - "name": "USAF-AGGRESSOR-269", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "swiss u-1251 - white": { - "name": "U-1251 - White", - "countries": [ - "SUI" - ] - }, - "xx201 - 2010 raf hawk display": { - "name": "XX201-4FTS-HawkDisplay2010", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx175 - fradu royal navy": { - "name": "Royal Navy XX175", - "countries": [ - "UK" - ] - }, - "1018 - united arab emirates": { - "name": "United Arab Emirates Air Force", - "countries": [ - "ARE" - ] - }, - "xx179 - red arrows 1979-2007": { - "name": "Red Arrows 1979-2007", - "countries": [ - "UK" - ] - }, - "xx178 - 1994 raf hawk display": { - "name": "XX178-RAF Hawk Display 1994", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx159 - fradu royal navy anniversary": { - "name": "Royal Navy XX159", - "countries": [ - "UK" - ] - }, - "xx189 - 100sqn": { - "name": "100Sqn XX189", - "countries": [ - "TUR", - "RUS", - "USA", - "ISR", - "NETH", - "NOR", - "RSO", - "BEL", - "GER", - "DEN", - "SPN", - "GRG", - "ABH", - "UKR", - "ITA", - "CAN", - "FRA", - "UK" - ] - }, - "xx228 - veao": { - "name": "VEAO, XX228", - "countries": [ - "UK" - ] - }, - "xx316 - 74sqn 1998-2000": { - "name": "74Sqn XX316 1998-2000", - "countries": [ - "UK" - ] - }, - "xx179 - red arrows 2008-2012": { - "name": "Red Arrows 2008-2012", - "countries": [ - "UK" - ] - }, - "12th ftw, randolph afb, texas (ra)": { - "name": "12th FTW, Randolph AFB, Texas (RA)", - "countries": [ - "USA" - ] - }, - "nas meridian, mississippi seven (vt-7)": { - "name": "NAS Meridian, Mississippi Seven (VT-7)", - "countries": [ - "USA" - ] - }, - "88th fts, sheppard afb, texas (en)": { - "name": "88th FTS, Sheppard AFB, Texas (EN)", - "countries": [ - "USA" - ] - }, - "xx159 - 2004 raf hawk display": { - "name": "XX159-RAF Hawk Display 2004", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - } - }, - "acquisitionRange": 0, - "engagementRange": 45000, - "description": "Hawk site missile laucher. 3 missiles. Needs rest of site to fuction", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "Hawk SAM Battery" - }, - "Hawk pcp": { - "name": "Hawk pcp", - "coalition": "blue", - "era": "Late Cold War", - "label": "Hawk Platoon Command Post", - "shortLabel": "Hawk pcp", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Hawk site command post. Medium sized trailer.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Hawk sr": { - "name": "Hawk sr", - "coalition": "blue", - "era": "Early Cold War", - "label": "Hawk Search Radar", - "shortLabel": "Hawk sr", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "xx337 - 92 sqn blue tail": { - "name": "XX337-92Sqn", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-341 grey": { - "name": "HW-341 Grey", - "countries": [ - "FIN" - ] - }, - "xx245 - 2009 raf hawk display": { - "name": "XX245-RAF Hawk Display 2009", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-329 green brown": { - "name": "HW-329 Green Brown", - "countries": [ - "FIN" - ] - }, - "swiss u-1268 - byebyehawk": { - "name": "U-1268 - ByeByeHawk", - "countries": [ - "SUI" - ] - }, - "25th fts, vance afb, oklahoma (vn)": { - "name": "25th FTS, Vance AFB, Oklahoma (VN)", - "countries": [ - "USA" - ] - }, - "xx226 - 74sqn 1992-2000": { - "name": "74Sqn XX226 1992-2000", - "countries": [ - "UK" - ] - }, - "finland hw-373 ex-swiss air force": { - "name": "HW-373 Ex-Swiss Air Force", - "countries": [ - "FIN" - ] - }, - "swiss u-1252 - normal": { - "name": "U-1252 - Normal", - "countries": [ - "SUI" - ] - }, - "swiss u-1270 - wallis": { - "name": "U-1270 - Wallis", - "countries": [ - "SUI" - ] - }, - "1st rs, beale afb, california (bb)": { - "name": "1st RS, Beale AFB, California (BB)", - "countries": [ - "USA" - ] - }, - "xx100 - tfc": { - "name": "The Fighter Collection XX100", - "countries": [ - "UK" - ] - }, - "509th bs, whitman afb, missouri (wm)": { - "name": "509th BS, Whiteman AFB, Missouri (WM)", - "countries": [ - "USA" - ] - }, - "xx218 - 208sqn": { - "name": "208Sqn XX218", - "countries": [ - "UK" - ] - }, - "xx316 - fradu royal navy": { - "name": "Royal Navy XX316", - "countries": [ - "UK" - ] - }, - "usaf aggressor 269": { - "name": "USAF-AGGRESSOR-269", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "swiss u-1251 - white": { - "name": "U-1251 - White", - "countries": [ - "SUI" - ] - }, - "xx201 - 2010 raf hawk display": { - "name": "XX201-4FTS-HawkDisplay2010", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx175 - fradu royal navy": { - "name": "Royal Navy XX175", - "countries": [ - "UK" - ] - }, - "1018 - united arab emirates": { - "name": "United Arab Emirates Air Force", - "countries": [ - "ARE" - ] - }, - "xx179 - red arrows 1979-2007": { - "name": "Red Arrows 1979-2007", - "countries": [ - "UK" - ] - }, - "xx178 - 1994 raf hawk display": { - "name": "XX178-RAF Hawk Display 1994", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx159 - fradu royal navy anniversary": { - "name": "Royal Navy XX159", - "countries": [ - "UK" - ] - }, - "xx189 - 100sqn": { - "name": "100Sqn XX189", - "countries": [ - "TUR", - "RUS", - "USA", - "ISR", - "NETH", - "NOR", - "RSO", - "BEL", - "GER", - "DEN", - "SPN", - "GRG", - "ABH", - "UKR", - "ITA", - "CAN", - "FRA", - "UK" - ] - }, - "xx228 - veao": { - "name": "VEAO, XX228", - "countries": [ - "UK" - ] - }, - "xx316 - 74sqn 1998-2000": { - "name": "74Sqn XX316 1998-2000", - "countries": [ - "UK" - ] - }, - "xx179 - red arrows 2008-2012": { - "name": "Red Arrows 2008-2012", - "countries": [ - "UK" - ] - }, - "12th ftw, randolph afb, texas (ra)": { - "name": "12th FTW, Randolph AFB, Texas (RA)", - "countries": [ - "USA" - ] - }, - "nas meridian, mississippi seven (vt-7)": { - "name": "NAS Meridian, Mississippi Seven (VT-7)", - "countries": [ - "USA" - ] - }, - "88th fts, sheppard afb, texas (en)": { - "name": "88th FTS, Sheppard AFB, Texas (EN)", - "countries": [ - "USA" - ] - }, - "xx159 - 2004 raf hawk display": { - "name": "XX159-RAF Hawk Display 2004", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - } - }, - "acquisitionRange": 90000, - "engagementRange": 0, - "description": "Hawk site search Radar. Medium sized trailer", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam-radar" - }, - "Hawk tr": { - "name": "Hawk tr", - "coalition": "blue", - "era": "Early Cold War", - "label": "Hawk Track Radar", - "shortLabel": "Hawk tr", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "xx337 - 92 sqn blue tail": { - "name": "XX337-92Sqn", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-341 grey": { - "name": "HW-341 Grey", - "countries": [ - "FIN" - ] - }, - "xx245 - 2009 raf hawk display": { - "name": "XX245-RAF Hawk Display 2009", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "finland hw-329 green brown": { - "name": "HW-329 Green Brown", - "countries": [ - "FIN" - ] - }, - "swiss u-1268 - byebyehawk": { - "name": "U-1268 - ByeByeHawk", - "countries": [ - "SUI" - ] - }, - "25th fts, vance afb, oklahoma (vn)": { - "name": "25th FTS, Vance AFB, Oklahoma (VN)", - "countries": [ - "USA" - ] - }, - "xx226 - 74sqn 1992-2000": { - "name": "74Sqn XX226 1992-2000", - "countries": [ - "UK" - ] - }, - "finland hw-373 ex-swiss air force": { - "name": "HW-373 Ex-Swiss Air Force", - "countries": [ - "FIN" - ] - }, - "swiss u-1252 - normal": { - "name": "U-1252 - Normal", - "countries": [ - "SUI" - ] - }, - "swiss u-1270 - wallis": { - "name": "U-1270 - Wallis", - "countries": [ - "SUI" - ] - }, - "1st rs, beale afb, california (bb)": { - "name": "1st RS, Beale AFB, California (BB)", - "countries": [ - "USA" - ] - }, - "xx100 - tfc": { - "name": "The Fighter Collection XX100", - "countries": [ - "UK" - ] - }, - "509th bs, whitman afb, missouri (wm)": { - "name": "509th BS, Whiteman AFB, Missouri (WM)", - "countries": [ - "USA" - ] - }, - "xx218 - 208sqn": { - "name": "208Sqn XX218", - "countries": [ - "UK" - ] - }, - "xx316 - fradu royal navy": { - "name": "Royal Navy XX316", - "countries": [ - "UK" - ] - }, - "usaf aggressor 269": { - "name": "USAF-AGGRESSOR-269", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "swiss u-1251 - white": { - "name": "U-1251 - White", - "countries": [ - "SUI" - ] - }, - "xx201 - 2010 raf hawk display": { - "name": "XX201-4FTS-HawkDisplay2010", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx175 - fradu royal navy": { - "name": "Royal Navy XX175", - "countries": [ - "UK" - ] - }, - "1018 - united arab emirates": { - "name": "United Arab Emirates Air Force", - "countries": [ - "ARE" - ] - }, - "xx179 - red arrows 1979-2007": { - "name": "Red Arrows 1979-2007", - "countries": [ - "UK" - ] - }, - "xx178 - 1994 raf hawk display": { - "name": "XX178-RAF Hawk Display 1994", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - }, - "xx159 - fradu royal navy anniversary": { - "name": "Royal Navy XX159", - "countries": [ - "UK" - ] - }, - "xx189 - 100sqn": { - "name": "100Sqn XX189", - "countries": [ - "TUR", - "RUS", - "USA", - "ISR", - "NETH", - "NOR", - "RSO", - "BEL", - "GER", - "DEN", - "SPN", - "GRG", - "ABH", - "UKR", - "ITA", - "CAN", - "FRA", - "UK" - ] - }, - "xx228 - veao": { - "name": "VEAO, XX228", - "countries": [ - "UK" - ] - }, - "xx316 - 74sqn 1998-2000": { - "name": "74Sqn XX316 1998-2000", - "countries": [ - "UK" - ] - }, - "xx179 - red arrows 2008-2012": { - "name": "Red Arrows 2008-2012", - "countries": [ - "UK" - ] - }, - "12th ftw, randolph afb, texas (ra)": { - "name": "12th FTW, Randolph AFB, Texas (RA)", - "countries": [ - "USA" - ] - }, - "nas meridian, mississippi seven (vt-7)": { - "name": "NAS Meridian, Mississippi Seven (VT-7)", - "countries": [ - "USA" - ] - }, - "88th fts, sheppard afb, texas (en)": { - "name": "88th FTS, Sheppard AFB, Texas (EN)", - "countries": [ - "USA" - ] - }, - "xx159 - 2004 raf hawk display": { - "name": "XX159-RAF Hawk Display 2004", - "countries": [ - "USA", - "NOR", - "BEL", - "DEN", - "SPN", - "UKR", - "TUR", - "NETH", - "ISR", - "ABH", - "FRA", - "RUS", - "INS", - "RSO", - "AUS", - "CAN", - "UK", - "GER", - "GRG", - "ITA" - ] - } - }, - "acquisitionRange": 90000, - "engagementRange": 0, - "description": "Hawk site track Radar. Medium sized trailer", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "Hummer": { - "name": "Hummer", - "coalition": "blue", - "era": "Late Cold War", - "label": "HMMWV Unarmed", - "shortLabel": "HMMWV", - "filename": "", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "M-1025 HMMWV (Humvee). Wheeled. Unarmed.", - "abilities": "Combined arms, Transport", - "canTargetPoint": false, - "canRearm": false, - "tags": "CA, Unarmed", - "markerFile": "groundunit-tactical" - }, - "IKARUS Bus": { - "name": "IKARUS Bus", - "coalition": "red", - "era": "Mid Cold War", - "label": "IKARUS Bus", - "shortLabel": "IKARUS Bus", - "filename": "", - "type": "Unarmed", - "enabled": true, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Civilian Bus. Yellow. Bendy bus", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "Igla manpad INS": { - "name": "Igla manpad INS", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-18 Igla", - "shortLabel": "18", - "range": "Short", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 5200, - "description": "SA-18 Igla 9K38 IR MANPADS. Range/alt max: 5 km, 12,000 ft.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "IR, CA, MANPADS", - "markerFile": "groundunit-sam" - }, - "Infantry AK": { - "name": "Infantry AK", - "coalition": "red", - "era": "Mid Cold War", - "label": "AK-74", - "shortLabel": "AK-74", - "filename": "", - "type": "Infantry", - "enabled": true, - "muzzleVelocity": 900, - "barrelHeight": 0.9, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Russian solider carrying AK-74.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "aimTime": 5, - "shotsToFire": 5, - "tags": "Russian type 1", - "markerFile": "groundunit-infantry", - "canAAA": true, - "aimMethodRange": 2000, - "targetingRange": 100, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "KAMAZ Truck": { - "name": "KAMAZ Truck", - "coalition": "red", - "era": "Mid Cold War", - "label": "KAMAZ Truck", - "shortLabel": "KAMAZ Truck", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military truck, 2 axle, wheeled", - "abilities": "", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck", - "tags": "Repair, FARP" - }, - "Kub 1S91 str": { - "name": "Kub 1S91 str", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-6 Straight flush", - "shortLabel": "Kub 1S91 str", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 70000, - "engagementRange": 0, - "description": "SA-6/Kub search and track Radar, tracked.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "Kub 2P25 ln": { - "name": "Kub 2P25 ln", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-6 Launcher", - "shortLabel": "Kub 2P25 ln", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 25000, - "description": "SA-6/Kub launcher. 3 missiles. Tracked. Needs rest of site to function", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "SA-6 SAM Battery" - }, - "LAV-25": { - "name": "LAV-25", - "coalition": "blue", - "era": "Late Cold War", - "label": "LAV-25 IFV", - "shortLabel": "LAV-25", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "aus_winter": { - "name": "AUS_Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "aus_summer": { - "name": "AUS_Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "sand": { - "name": "sand", - "countries": "All" - }, - "green": { - "name": "green", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "LAV-25 Infantry fighter vehicle. Wheeled. Amphibious. 25 mm gun , 2 x 7.62 mm machine gun.", - "abilities": "Combined arms, Transport, Amphibious", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.28, - "muzzleVelocity": 1100, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2800, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "LAZ Bus": { - "name": "LAZ Bus", - "coalition": "red", - "era": "Early Cold War", - "label": "LAZ Bus", - "shortLabel": "LAZ Bus", - "filename": "", - "type": "Unarmed", - "enabled": true, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Civilian bus. Single Axle. Wheeled", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "Leclerc": { - "name": "Leclerc", - "coalition": "blue", - "era": "Late Cold War", - "label": "Leclerc", - "shortLabel": "Leclerc", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm smoothbore main gun (APFSDS and HEAT), 7.62 mm coax machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 500, - "barrelHeight": 1.6, - "shotsBaseInterval": 5, - "shotsToFire": 5, - "tags": "CA", - "aimTime": 5, - "aimMethodRange": 300, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 3 - }, - "Leopard-2": { - "name": "Leopard-2", - "coalition": "blue", - "era": "Late Cold War", - "label": "Leopard-2", - "shortLabel": "Leopard-2", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "can_spring": { - "name": "CAN_spring", - "countries": "All" - }, - "winter": { - "name": "winter", - "countries": "All" - }, - "spn_summer": { - "name": "SPN_Summer", - "countries": "All" - }, - "de_desert_winter": { - "name": "winter", - "countries": "All" - }, - "de_desert_spring": { - "name": "spring", - "countries": "All" - }, - "de_summer": { - "name": "summer", - "countries": "All" - }, - "den_autumn": { - "name": "DEN_autumn", - "countries": "All" - }, - "den_spring": { - "name": "DEN_spring", - "countries": "All" - }, - "de_winter": { - "name": "winter", - "countries": "All" - }, - "neth_summer": { - "name": "NETH_summer", - "countries": "All" - }, - "de_autumn": { - "name": "winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_summer", - "countries": "All" - }, - "spring": { - "name": "spring", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_autumn", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "de_desert_summer": { - "name": "DE_Desert_summer", - "countries": "All" - }, - "desert_summer": { - "name": "Desert_summer", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_winter", - "countries": "All" - }, - "den_summer": { - "name": "DEN_summer", - "countries": "All" - }, - "desert_autumn": { - "name": "Desert_autumn", - "countries": "All" - }, - "de_spring": { - "name": "spring", - "countries": "All" - }, - "den_winter": { - "name": "DEN_winter", - "countries": "All" - }, - "fin_winter": { - "name": "FIN_winter", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_spring", - "countries": "All" - }, - "desert_winter": { - "name": "Desert_winter", - "countries": "All" - }, - "can_winter": { - "name": "CAN_winter", - "countries": "All" - }, - "de_desert_autumn": { - "name": "autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - }, - "desert_spring": { - "name": "Desert_spring", - "countries": "All" - }, - "fin_spring": { - "name": "FIN_spring", - "countries": "All" - }, - "fin_summer": { - "name": "FIN_summer", - "countries": "All" - }, - "can_summer": { - "name": "CAN_summer", - "countries": "All" - }, - "can_autumn": { - "name": "CAN_autumn", - "countries": "All" - }, - "neth_winter": { - "name": "NETH_winter", - "countries": "All" - }, - "spn_winter": { - "name": "SPN_Winter", - "countries": "All" - }, - "fin_autumn": { - "name": "FIN_autumn", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm smoothbore main gun (APFSDS and HEAT), 7.62 mm machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 800, - "barrelHeight": 2.5, - "shotsBaseInterval": 6, - "shotsToFire": 5, - "tags": "CA", - "aimTime": 5, - "aimMethodRange": 3000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 4, - "canAAA": true - }, - "Leopard1A3": { - "name": "Leopard1A3", - "coalition": "blue", - "era": "Late Cold War", - "label": "Leopard1A3", - "shortLabel": "Leopard1A3", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 105 mm rifled main gun (APDS and HEAT), 7.62 mm coaxial machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 560, - "barrelHeight": 2.49, - "shotsBaseInterval": 6, - "shotsToFire": 5, - "aimTime": 5, - "tags": "CA", - "aimMethodRange": 3000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "M 818": { - "name": "M 818", - "coalition": "blue", - "era": "Early Cold War", - "label": "M 818", - "shortLabel": "M 818", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "spring": { - "name": "spring", - "countries": "All" - }, - "winter": { - "name": "winter", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Heavy utility truck. Wheeled. Used for FARPs", - "abilities": "", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck", - "tags": "CA, Power, Re-Arming, Repair" - }, - "M-1 Abrams": { - "name": "M-1 Abrams", - "coalition": "blue", - "era": "Late Cold War", - "label": "M-1 Abrams", - "shortLabel": "M-1 Abrams", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm smoothbore M256 main gun (APFSDS and HEAT), 7.62 mm machine gun.", - "abilities": "Combined arms,", - "canTargetPoint": true, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 500, - "barrelHeight": 2.5, - "shotsBaseInterval": 7, - "shotsToFire": 5, - "aimTime": 5, - "aimMethodRange": 300, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 3, - "canAAA": true - }, - "M-109": { - "name": "M-109", - "coalition": "blue", - "era": "Mid Cold War", - "label": "M-109 Paladin", - "shortLabel": "M-109", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 22000, - "description": "M-109 Paladin. Tracked. Turreted self propelled 155mm howitzer. 30m min range, 22km max.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "155mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "M-113": { - "name": "M-113", - "coalition": "blue", - "era": "Mid Cold War", - "label": "M-113", - "shortLabel": "M-113", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "winter", - "countries": "All" - }, - "grc_autumn_med": { - "name": "GRC_autumn", - "countries": "All" - }, - "winter_med": { - "name": "winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_summer", - "countries": "All" - }, - "spring": { - "name": "spring", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - }, - "grc_spring_med": { - "name": "GRC_spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_autumn", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_winter", - "countries": "All" - }, - "green_med": { - "name": "green", - "countries": "All" - }, - "green": { - "name": "green", - "countries": "All" - }, - "spring_med": { - "name": "spring", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_spring", - "countries": "All" - }, - "grc_winter_med": { - "name": "GRC_winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - }, - "grc_summer_med": { - "name": "GRC_summer", - "countries": "All" - }, - "autumn_med": { - "name": "autumn", - "countries": "All" - }, - "desert_med": { - "name": "Desert", - "countries": "All" - }, - "summer_med": { - "name": "summer", - "countries": "All" - } - }, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "M-113. Tracked. Amphibious. 12.7 mm machine gun.", - "abilities": "Combined arms, Transport", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.8, - "muzzleVelocity": 950, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2500, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "M-2 Bradley": { - "name": "M-2 Bradley", - "coalition": "blue", - "era": "Late Cold War", - "label": "M-2A2 Bradley IFV", - "shortLabel": "M-2 Bradley", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 4000, - "engagementRange": 1000, - "description": "M-2A2 Bradley Infantry fighting vehicle. Tracked. Amphibious. 25 mm gun, 7.62 mm machine gun, BGM-71 TOW missile.", - "abilities": "Combined arms, Transport, Amphibious", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.44, - "muzzleVelocity": 1000, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 3800, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "M-60": { - "name": "M-60", - "coalition": "blue", - "era": "Mid Cold War", - "label": "M-60", - "shortLabel": "M-60", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "winter", - "countries": "All" - }, - "spring": { - "name": "spring", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 4000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 105 mm rifled M68 main gun (APDS and HEAT), 7.62 mm machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 600, - "barrelHeight": 2.8, - "shotsBaseInterval": 12, - "shotsToFire": 5, - "aimTime": 5, - "tags": "CA", - "aimMethodRange": 2500, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "M1043 HMMWV Armament": { - "name": "M1043 HMMWV Armament", - "coalition": "blue", - "era": "Late Cold War", - "label": "HMMWV .50 cal", - "shortLabel": "HMMWV M2", - "filename": "", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "M1043 HMMWV (Humvee). Wheeled. 12.7 mm machine gun.", - "abilities": "Combined arms, Transport", - "canTargetPoint": true, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-tactical", - "targetingRange": 100, - "aimMethodRange": 2500, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true, - "barrelHeight": 2, - "muzzleVelocity": 900 - }, - "M1045 HMMWV TOW": { - "name": "M1045 HMMWV TOW", - "coalition": "blue", - "era": "Late Cold War", - "label": "HMMWV TOW", - "shortLabel": "HMMWV TOW", - "filename": "", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 3800, - "description": "M1045 HMMWV (Humvee). Wheeled. BGM-71 TOW missile.", - "abilities": "Combined arms, Transport", - "canTargetPoint": false, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-tactical" - }, - "M1097 Avenger": { - "name": "M1097 Avenger", - "coalition": "blue", - "era": "Modern", - "label": "M1097 Avenger", - "shortLabel": "97", - "filename": "", - "type": "SAM Site", - "enabled": true, - "acquisitionRange": 5200, - "engagementRange": 4500, - "description": "M1097 Avenger IR SAM. Range/alt max: 5 km, 15,000 ft. Contains 8 x Stinger missiles.", - "abilities": "Combined arms,", - "canTargetPoint": true, - "canRearm": false, - "tags": "IR, CA", - "markerFile": "groundunit-sam" - }, - "M1126 Stryker ICV": { - "name": "M1126 Stryker ICV", - "coalition": "blue", - "era": "Modern", - "label": "Stryker MG", - "shortLabel": "Stryker MG", - "filename": "", - "type": "APC", - "enabled": true, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "M1126 Stryker. Wheeled. 12.7mm machine gun.", - "abilities": "Combined arms, Transport", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 3, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2500, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "M1128 Stryker MGS": { - "name": "M1128 Stryker MGS", - "coalition": "blue", - "era": "Modern", - "label": "M1128 Stryker MGS", - "shortLabel": "M1128 Stryker MGS", - "filename": "", - "type": "Tactical Vehicle", - "enabled": true, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "M1128 Stryker Mobile Gun System. Wheeled. 105 mm gun and 7.6mm machine gun.", - "abilities": "Combined arms,", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 3, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-tactical", - "targetingRange": 100, - "aimMethodRange": 2500, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "M1134 Stryker ATGM": { - "name": "M1134 Stryker ATGM", - "coalition": "blue", - "era": "Modern", - "label": "Stryker ATGM", - "shortLabel": "Stryker ATGM", - "filename": "", - "type": "APC", - "enabled": true, - "acquisitionRange": 4000, - "engagementRange": 3800, - "description": "M1134 Stryker. Wheeled. 7.62 mm machine gun. BGM-71 TOW missile.", - "abilities": "Combined arms, Transport", - "canTargetPoint": true, - "canRearm": false, - "aimTime": 5, - "muzzleVelocity": 900, - "barrelHeight": 2.8, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 3500, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "M48 Chaparral": { - "name": "M48 Chaparral", - "coalition": "blue", - "era": "Mid Cold War", - "label": "M48 Chaparral", - "shortLabel": "48", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "usa_winter": { - "name": "USA_Winter", - "countries": "All" - }, - "isr_summer": { - "name": "ISR_Summer", - "countries": "All" - }, - "isr_spring": { - "name": "ISR_Spring", - "countries": "All" - }, - "usa_autumn": { - "name": "USA_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "isr_winter": { - "name": "ISR_Winter", - "countries": "All" - }, - "isr_autumn": { - "name": "ISR_Autumn", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "usa_summer": { - "name": "USA_Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "usa_spring": { - "name": "USA_Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 10000, - "engagementRange": 8500, - "description": "M48 Chaparral IR SAM. Range/alt max: 9 km, 13,000 ft. 4 x AIM 9 Sidewinder missiles.", - "abilities": "Combined arms,", - "canTargetPoint": false, - "canRearm": false, - "tags": "IR, CA", - "markerFile": "groundunit-sam" - }, - "M6 Linebacker": { - "name": "M6 Linebacker", - "coalition": "blue", - "era": "Late Cold War", - "label": "M6 Linebacker", - "shortLabel": "M6", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 6000, - "engagementRange": 4000, - "description": "M6 Linebacker IR SAM. Range/alt max: 5 km, 15,000 ft. 4 x Stinger on M2 Bradley.", - "abilities": "Combined arms,", - "canTargetPoint": false, - "canRearm": false, - "tags": "IR, CA", - "markerFile": "groundunit-sam" - }, - "M978 HEMTT Tanker": { - "name": "M978 HEMTT Tanker", - "coalition": "blue", - "era": "Mid Cold War", - "label": "M978 HEMTT Tanker", - "shortLabel": "M978 HEMTT Tanker", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Heavy Expanded Mobility Tactical Truck. Wheeled. Refueling for FARPs", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "Refueling, FARP" - }, - "MAZ-6303": { - "name": "MAZ-6303", - "coalition": "red", - "era": "Mid Cold War", - "label": "MAZ-6303", - "shortLabel": "MAZ-6303", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "winter", - "countries": "All" - }, - "spring": { - "name": "spring", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Logistical Military Truck. Wheeled", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "MCV-80": { - "name": "MCV-80", - "coalition": "blue", - "era": "Late Cold War", - "label": "Warrior IFV MCV-80", - "shortLabel": "Warrior", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 4000, - "engagementRange": 1000, - "description": "Warrior MCV-80 Infantry Fighting Vehicle. Tracked. 30 mm gun and 7.62 mm machine gun.", - "abilities": "Combined arms, Transport", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.21, - "muzzleVelocity": 1100, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 3500, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "MLRS": { - "name": "MLRS", - "coalition": "blue", - "era": "Late Cold War", - "label": "M270", - "shortLabel": "M270", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 30000, - "description": "M270 Multiple Launch Rocket System. Tracked. Fires M26 270 mm DPICM rockets. Min range 10km, max 35km. Note cluster munition can be very laggy with many shots.", - "abilities": "Combined arms, Indirect Fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "270mm, MLRS, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 60, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "MTLB": { - "name": "MTLB", - "coalition": "red", - "era": "Mid Cold War", - "label": "MT-LB", - "shortLabel": "MT-LB", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 2500, - "engagementRange": 1000, - "description": "MT-LB. Tracked. Amphibious. 7.62 mm machine gun.", - "abilities": "Combined arms, Transport, Amphibious", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.05, - "muzzleVelocity": 800, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "Marder": { - "name": "Marder", - "coalition": "blue", - "era": "Late Cold War", - "label": "Marder IFV", - "shortLabel": "Marder", - "filename": "", - "type": "APC", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "Marder Infantry FIghting Vehicle. Tracked. Amphibious. 20 mm gun and 7.62 mm machine gun.", - "abilities": "Combined arms, Transport, Amphibious", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.82, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2500, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "Osa 9A33 ln": { - "name": "Osa 9A33 ln", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-8 Launcher", - "shortLabel": "Osa 9A33 ln", - "range": "Short", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 30000, - "engagementRange": 10300, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "SA-8 SAM Battery" - }, - "Paratrooper AKS-74": { - "name": "Paratrooper AKS-74", - "coalition": "red", - "era": "Late Cold War", - "label": "AKS-74", - "shortLabel": "AKS-74", - "filename": "", - "type": "Infantry", - "enabled": true, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Russian paratrooper carrying AKS-74.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 0.9, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "Russian Para", - "markerFile": "groundunit-infantry", - "canAAA": true, - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Paratrooper RPG-16": { - "name": "Paratrooper RPG-16", - "coalition": "red", - "era": "Modern", - "label": "RPG-16", - "shortLabel": "Para RPG-16", - "filename": "", - "type": "Infantry", - "enabled": true, - "acquisitionRange": 1500, - "engagementRange": 300, - "description": "Russian paratrooper carrying RPG-16.", - "abilities": "Embark", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 0.9, - "muzzleVelocity": 295, - "aimTime": 5, - "shotsToFire": 1, - "tags": "Russian Para", - "markerFile": "groundunit-infantry", - "canAAA": true, - "targetingRange": 50, - "aimMethodRange": 750, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Patriot AMG": { - "name": "Patriot AMG", - "coalition": "blue", - "era": "Modern", - "label": "Patriot Antenna Mast Group", - "shortLabel": "Patriot AMG", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Patriot ECS": { - "name": "Patriot ECS", - "coalition": "blue", - "era": "Modern", - "label": "Patriot Engagement Control Station", - "shortLabel": "Patriot ECS", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Patriot EPP": { - "name": "Patriot EPP", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot Electric Power Plant", - "shortLabel": "Patriot EPP", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Patriot cp": { - "name": "Patriot cp", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot Command Post", - "shortLabel": "Patriot cp", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Patriot ln": { - "name": "Patriot ln", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot Launcher", - "shortLabel": "Patriot ln", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 100000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "Patriot site" - }, - "Patriot site": { - "name": "Patriot site", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot SAM Battery", - "shortLabel": "Pt", - "range": "Long", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 160000, - "engagementRange": 98000, - "description": "Patriot radar SAM site. Range/alt max: 150 km, 105,000 ft. Min: 5km. ", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "Pt" - }, - "Patriot str": { - "name": "Patriot str", - "coalition": "blue", - "era": "Late Cold War", - "label": "Patriot Search/Track Radar", - "shortLabel": "Patriot str", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 160000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "Predator GCS": { - "name": "Predator GCS", - "coalition": "blue", - "era": "Late Cold War", - "label": "Predator GCS", - "shortLabel": "Predator GCS", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "USAF Standard", - "countries": [ - "USA" - ] - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Ground Control Station", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "Predator TrojanSpirit": { - "name": "Predator TrojanSpirit", - "coalition": "blue", - "era": "Late Cold War", - "label": "Predator TrojanSpirit", - "shortLabel": "Predator TrojanSpirit", - "filename": "", - "type": "Unarmed", - "enabled": true, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Unmanned Aerial Vehicle (UAV) System", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "RLS_19J6": { - "name": "RLS_19J6", - "coalition": "Red", - "era": "Mid Cold War", - "label": "SA-5 Thin Shield", - "shortLabel": "RLS 19J6", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "spring": { - "name": "spring", - "countries": "All" - }, - "winter": { - "name": "winter", - "countries": "All" - }, - "autumn": { - "name": "autumn", - "countries": "All" - }, - "summer": { - "name": "summer", - "countries": "All" - } - }, - "acquisitionRange": 150000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "RPC_5N62V": { - "name": "RPC_5N62V", - "coalition": "Red", - "era": "Mid Cold War", - "label": "SA-5 Square Pair", - "shortLabel": "RPC 5N62V", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "desert_spring": { - "name": "S-200_Radar_Desert_Spring", - "countries": "All" - }, - "cam_autumn": { - "name": "S-200_Radar_Cam_Autumn", - "countries": "All" - }, - "cam_spring": { - "name": "S-200_Radar_Cam_Spring", - "countries": "All" - }, - "green_summer": { - "name": "S-200_Radar_Green_Summer", - "countries": "All" - }, - "green_winter": { - "name": "S-200_Radar_Green_Winter", - "countries": "All" - }, - "cam_summer": { - "name": "S-200_Radar_Cam_Summer", - "countries": "All" - }, - "desert_winter": { - "name": "S-200_Radar_Desert_Winter", - "countries": "All" - }, - "syria_autumn": { - "name": "S-200_Radar_Syria_Autumn", - "countries": "All" - }, - "syria_summer": { - "name": "S-200_Radar_Syria_Summer", - "countries": "All" - }, - "syria_winter": { - "name": "S-200_Radar_Syria_Winter", - "countries": "All" - }, - "green_spring": { - "name": "S-200_Radar_Green_Spring", - "countries": "All" - }, - "syria_spring": { - "name": "S-200_Radar_Syria_Spring", - "countries": "All" - }, - "desert_summer": { - "name": "S-200_Radar_Desert_Summer", - "countries": "All" - }, - "green_autumn": { - "name": "S-200_Radar_Green_Autumn", - "countries": "All" - }, - "desert_autumn": { - "name": "S-200_Radar_Desert_Autumn", - "countries": "All" - }, - "cam_winter": { - "name": "S-200_Radar_Cam_Winter", - "countries": "All" - } - }, - "acquisitionRange": 400000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Roland ADS": { - "name": "Roland ADS", - "coalition": "blue", - "era": "Late Cold War", - "label": "Roland ADS", - "shortLabel": "RO", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 12000, - "engagementRange": 8000, - "description": "Roland ADS radar and optical SAM. Range/alt max: 11 km, 18,000 ft. Tracked vehicle.", - "abilities": "Combined arms,", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar, Optical, CA", - "markerFile": "groundunit-sam" - }, - "Roland Radar": { - "name": "Roland Radar", - "coalition": "blue", - "era": "Mid Cold War", - "label": "Roland Search Radar", - "shortLabel": "Roland Radar", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 35000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "S-200_Launcher": { - "name": "S-200_Launcher", - "coalition": "Red", - "era": "Mid Cold War", - "label": "SA-5 Launcher", - "shortLabel": "S-200 Launcher", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "desert_spring": { - "name": "S-200_Launcher_Desert_Spring", - "countries": "All" - }, - "cam_autumn": { - "name": "S-200_Cam_Autumn", - "countries": "All" - }, - "cam_spring": { - "name": "S-200_Launcher_Cam_Spring", - "countries": "All" - }, - "green_summer": { - "name": "S-200_Launcher_Green_Summer", - "countries": "All" - }, - "green_winter": { - "name": "S-200_Launcher_Green_Winter", - "countries": "All" - }, - "cam_summer": { - "name": "S-200_Launcher_Cam_Summer", - "countries": "All" - }, - "desert_winter": { - "name": "S-200_Launcher_Desert_Winter", - "countries": "All" - }, - "syria_autumn": { - "name": "S-200_Launcher_Syria_Autumn", - "countries": "All" - }, - "syria_summer": { - "name": "S-200_Launcher_Syria_Summer", - "countries": "All" - }, - "syria_winter": { - "name": "S-200_Launcher_Syria_Winter", - "countries": "All" - }, - "green_spring": { - "name": "S-200_Launcher_Green_Spring", - "countries": "All" - }, - "syria_spring": { - "name": "S-200_Launcher_Syria_Spring", - "countries": "All" - }, - "desert_summer": { - "name": "S-200_Launcher_Desert_Summer", - "countries": "All" - }, - "green_autumn": { - "name": "S-200_Launcher_Green_Autumn", - "countries": "All" - }, - "desert_autumn": { - "name": "S-200_Launcher_Desert_Autumn", - "countries": "All" - }, - "cam_winter": { - "name": "S-200_Launcher_Cam_Winter", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 255000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "SA-5 SAM Battery" - }, - "S-300PS 40B6M tr": { - "name": "S-300PS 40B6M tr", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Tin Shield", - "shortLabel": "S-300PS 40B6M tr", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 160000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "S-300PS 40B6MD sr": { - "name": "S-300PS 40B6MD sr", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Clam Shell", - "shortLabel": "S-300PS 40B6MD sr", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 60000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "S-300PS 54K6 cp": { - "name": "S-300PS 54K6 cp", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Command Post", - "shortLabel": "S-300PS 54K6 cp", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "S-300PS 5P85C ln": { - "name": "S-300PS 5P85C ln", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Launcher", - "shortLabel": "S-300PS 5P85C ln", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 120000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "5P85C", - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "SA-10 SAM Battery" - }, - "S-300PS 5P85D ln": { - "name": "S-300PS 5P85D ln", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Launcher", - "shortLabel": "S-300PS 5P85D ln", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 120000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "5P85D", - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "SA-10 SAM Battery" - }, - "S-300PS 64H6E sr": { - "name": "S-300PS 64H6E sr", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 Big Bird", - "shortLabel": "S-300PS 64H6E sr", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 160000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "SA-10 SAM Battery": { - "name": "SA-10 SAM Battery", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-10 SAM Battery", - "shortLabel": "10", - "range": "Long", - "filename": "", - "type": "SAM Site", - "enabled": true, - "acquisitionRange": 300000, - "engagementRange": 52000, - "description": "SA-10 Grumble radar SAM site S-300. Range/alt max: 52 km, 100,000 ft.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "10" - }, - "SA-11 Buk CC 9S470M1": { - "name": "SA-11 Buk CC 9S470M1", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-11 Command Post", - "shortLabel": "SA-11 Buk CC 9S470M1", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "SA-11 Buk LN 9A310M1": { - "name": "SA-11 Buk LN 9A310M1", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-11 Launcher", - "shortLabel": "SA-11 Buk LN 9A310M1", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 50000, - "engagementRange": 35000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "SA-11 SAM Battery" - }, - "SA-11 Buk SR 9S18M1": { - "name": "SA-11 Buk SR 9S18M1", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-11 Snown Drift", - "shortLabel": "SA-11 Buk SR 9S18M1", - "range": "Long", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 100000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "SA-11 SAM Battery": { - "name": "SA-11 SAM Battery", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-11 SAM Battery", - "shortLabel": "11", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true, - "acquisitionRange": 98000, - "engagementRange": 33000, - "description": "SA-11 Gadfly radar SAM site 9K37. Range/alt max: 42 km, 82,000 ft.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "11" - }, - "SA-18 Igla manpad": { - "name": "SA-18 Igla manpad", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-18 Igla \"Grouse\" C2", - "shortLabel": "18", - "range": "Short", - "filename": "", - "type": "SAM Site", - "enabled": false, - "acquisitionRange": 5000, - "engagementRange": 5200, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "MANPADS", - "markerFile": "groundunit-sam" - }, - "SA-18 Igla-S manpad": { - "name": "SA-18 Igla-S manpad", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-18 Igla \"Grouse\" C2", - "shortLabel": "18", - "range": "Short", - "filename": "", - "type": "SAM Site", - "enabled": false, - "acquisitionRange": 5000, - "engagementRange": 5200, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "MANPADS", - "markerFile": "groundunit-sam" - }, - "SA-2 SAM Battery": { - "name": "SA-2 SAM Battery", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-2 SAM Battery", - "shortLabel": "2", - "range": "Long", - "filename": "", - "type": "SAM Site", - "enabled": true, - "acquisitionRange": 160000, - "engagementRange": 42000, - "description": "SA-2 Guideline radar SAM site S-75. Range/alt max: 24 km, 66,000 ft.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "2" - }, - "SA-3 SAM Battery": { - "name": "SA-3 SAM Battery", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-3 SAM Battery", - "shortLabel": "3", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true, - "acquisitionRange": 160000, - "engagementRange": 18000, - "description": "SA-3 Goa radar SAM site S-125. Range/alt max: 35 km, 60,000 ft.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "3" - }, - "SA-5 SAM Battery": { - "name": "SA-5 SAM Battery", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-5 SAM Battery", - "shortLabel": "5", - "range": "Long", - "filename": "", - "type": "SAM Site", - "enabled": true, - "acquisitionRange": 400000, - "engagementRange": 250000, - "description": "SA-5 Gammon radar SAM site S-200. Range/alt max: 300 km, 120,000 ft. Min 60km.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "5" - }, - "SA-6 SAM Battery": { - "name": "SA-6 SAM Battery", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-6 SAM Battery", - "shortLabel": "6", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true, - "description": "SA-6 Gainful radar SAM site 2K12. Range/alt max: 55 km, 50,000 ft. Tracked vehicle.", - "abilities": "", - "acquisitionRange": 68000, - "engagementRange": 22000, - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar", - "markerFile": "groundunit-sam", - "unitWhenGrouped": "6" - }, - "SAU 2-C9": { - "name": "SAU 2-C9", - "coalition": "red", - "era": "Mid Cold War", - "label": "SAU Nona", - "shortLabel": "SAU Nona", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 7000, - "description": "2S9 Nona. Tracked. 120mm howitzer. 30m min range, 7km max. Doesn't let you use the gun in CA.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "120mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "SAU Akatsia": { - "name": "SAU Akatsia", - "coalition": "red", - "era": "Mid Cold War", - "label": "SAU Akatsiya", - "shortLabel": "SAU Akatsiya", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 17000, - "description": "SAU Akatsiya. Tracked. Self propelled 152mm howitzer. 30m min range, 17km max.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "152mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "SAU Gvozdika": { - "name": "SAU Gvozdika", - "coalition": "red", - "era": "Mid Cold War", - "label": "SAU Gvozdika", - "shortLabel": "SAU Gvozdika", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 15000, - "description": "2S1 SAU Gvozdika. Tracked. 122m howitzer. 1km min range, 15km max.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "122mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "SAU Msta": { - "name": "SAU Msta", - "coalition": "red", - "era": "Late Cold War", - "label": "SAU Msta", - "shortLabel": "SAU Msta", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 23500, - "description": "2S19 Msta. Tracked. 152.4mm howitzer. 1km min range, 24km max.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "152mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "SKP-11": { - "name": "SKP-11", - "coalition": "red", - "era": "Early Cold War", - "label": "SKP-11", - "shortLabel": "SKP-11", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Repair and recovery vehicle. Wheeled. Comms for FARPs", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "Comms" - }, - "SNR_75V": { - "name": "SNR_75V", - "coalition": "Red", - "era": "Early Cold War", - "label": "SA-2 Fan Song", - "shortLabel": "SNR 75V", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 100000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "S_75M_Volhov": { - "name": "S_75M_Volhov", - "coalition": "Red", - "era": "Early Cold War", - "label": "SA-2 Launcher", - "shortLabel": "S75M Volhov", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 43000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-launcher", - "unitWhenGrouped": "SA-2 SAM Battery" - }, - "Sandbox": { - "name": "Sandbox", - "coalition": "", - "era": "", - "label": "Sandbox", - "shortLabel": "Sandbox", - "filename": "", - "type": "Structure", - "enabled": false, - "acquisitionRange": 0, - "engagementRange": 800, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Smerch": { - "name": "Smerch", - "coalition": "red", - "era": "Late Cold War", - "label": "BM-30 Smerch (Cluster)", - "shortLabel": "BM-30 Smerch", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 70000, - "description": "BM-30 9A52 Smerch. Wheeled. Multiple launch rocket system, 300 mm cluster rockets. 20km min range, 71 km max. Cluster munitions can be very laggy en masse.", - "abilities": "Combined arms,", - "canTargetPoint": true, - "canRearm": false, - "tags": "300mm, MLRS, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "Soldier AK": { - "name": "Soldier AK", - "coalition": "red", - "era": "Early Cold War", - "label": "AK-74", - "shortLabel": "AK-74", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "muzzleVelocity": 900, - "barrelHeight": 1, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Solider carrying AK-74.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "aimTime": 5, - "shotsToFire": 5, - "tags": "Russian type 4", - "markerFile": "groundunit-infantry", - "canAAA": true, - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Soldier M249": { - "name": "Soldier M249", - "coalition": "blue", - "era": "Late Cold War", - "label": "M249", - "shortLabel": "M249", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Solider carrying M249.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "muzzleVelocity": 915, - "aimTime": 5, - "shotsToFire": 5, - "barrelHeight": 0.25, - "tags": "US", - "markerFile": "groundunit-infantry", - "canAAA": true, - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Soldier M4 GRG": { - "name": "Soldier M4 GRG", - "coalition": "blue", - "era": "Mid Cold War", - "label": "M4", - "shortLabel": "M4", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Solider carrying M4.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 0.95, - "muzzleVelocity": 910, - "aimTime": 5, - "shotsToFire": 5, - "tags": "Georgia", - "markerFile": "groundunit-infantry", - "canAAA": true, - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Soldier M4": { - "name": "Soldier M4", - "coalition": "blue", - "era": "Mid Cold War", - "label": "M4", - "shortLabel": "M4", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Solider carrying M4.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 1, - "muzzleVelocity": 910, - "aimTime": 5, - "shotsToFire": 5, - "tags": "US", - "markerFile": "groundunit-infantry", - "canAAA": true, - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Soldier RPG": { - "name": "Soldier RPG", - "coalition": "red", - "era": "Mid Cold War", - "label": "RPG", - "shortLabel": "Soldier RPG", - "filename": "", - "type": "Infantry", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "acquisitionRange": 1500, - "engagementRange": 300, - "description": "Solider carrying RPG-16.", - "abilities": "Embark", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 0.8, - "muzzleVelocity": 295, - "aimTime": 5, - "shotsToFire": 1, - "tags": "Russian", - "markerFile": "groundunit-infantry", - "canAAA": true, - "targetingRange": 50, - "aimMethodRange": 750, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Stinger comm dsr": { - "name": "Stinger comm dsr", - "coalition": "red", - "era": "Late Cold War", - "label": "Stinger", - "shortLabel": "Stinger", - "range": "Short", - "filename": "", - "type": "SAM Site", - "enabled": false, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "multicam": { - "name": "multicam", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "MANPADS, IR", - "markerFile": "groundunit-sam" - }, - "Stinger comm": { - "name": "Stinger comm", - "coalition": "blue", - "era": "Late Cold War", - "label": "Stinger", - "shortLabel": "Stinger", - "range": "Short", - "filename": "", - "type": "SAM Site", - "enabled": false, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "multicam": { - "name": "multicam", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "IR, CA, MANPADS", - "markerFile": "groundunit-sam" - }, - "Strela-1 9P31": { - "name": "Strela-1 9P31", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-9 Gaskin", - "shortLabel": "9", - "range": "Short", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 4200, - "description": "SA-9 Gaskin Strela 1. Range/alt max: 5 km, 12,000 ft.", - "abilities": "Combined arms, Amphibious", - "canTargetPoint": false, - "canRearm": false, - "tags": "IR, CA", - "markerFile": "groundunit-sam" - }, - "Strela-10M3": { - "name": "Strela-10M3", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-13 Gopher", - "shortLabel": "13", - "range": "Short", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 8000, - "engagementRange": 5000, - "description": "SA-13 Gopher Strela 10. Range/alt max: 5 km, 12,000 ft.", - "abilities": "Combined arms, Amphibious", - "canTargetPoint": false, - "canRearm": false, - "tags": "Optical, Radar, CA", - "markerFile": "groundunit-sam" - }, - "Suidae": { - "name": "Suidae", - "coalition": "", - "era": "Modern", - "label": "Suidae", - "shortLabel": "Suidae", - "filename": "", - "type": "Unarmed", - "enabled": true, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "The destroyer of all. Pre-Dates all living and un-living creatures.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "Prehistoric" - }, - "T-55": { - "name": "T-55", - "coalition": "red", - "era": "Early Cold War", - "label": "T-55", - "shortLabel": "T-55", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 4000, - "engagementRange": 1000, - "description": "Medium tank. Tracked. 100 mm D-10T rifled gun (APFSDS and HEAT), 7.62 mm SGMT machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "tags": "CA", - "targetingRange": 100, - "muzzleVelocity": 700, - "barrelHeight": 2.3, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 9, - "aimMethodRange": 2500, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 6, - "canAAA": true - }, - "T-72B": { - "name": "T-72B", - "coalition": "red", - "era": "Late Cold War", - "label": "T-72B", - "shortLabel": "T-72B", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 125 mm 2A46M smoothbore gun (APFSDS and HEAT), 7.62 mm PKT machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 8, - "shotsBaseScatter": 5, - "barrelHeight": 2.5, - "muzzleVelocity": 700, - "aimMethodRange": 2500, - "alertnessTimeConstant": 4, - "canAAA": true, - "tags": "CA" - }, - "T-80UD": { - "name": "T-80UD", - "coalition": "red", - "era": "Late Cold War", - "label": "T-80UD", - "shortLabel": "T-80UD", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "iran - 01": { - "name": "Iran - 01", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "iran - 02": { - "name": "Iran - 02", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 125 mm 2A46M-1 smoothbore gun (APFSDS and HEAT), 7.62 mm PKT machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 800, - "barrelHeight": 2.32, - "shotsToFire": 5, - "aimTime": 5, - "shotsBaseInterval": 6, - "tags": "CA", - "aimMethodRange": 3000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "T-90": { - "name": "T-90", - "coalition": "red", - "era": "Late Cold War", - "label": "T-90", - "shortLabel": "T-90", - "filename": "", - "type": "Tank", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 6000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 125 mm 2A46M smoothbore gun (APFSDS and HEAT), 7.62 mm PKT machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 700, - "barrelHeight": 2.7, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 8, - "tags": "CA", - "canAAA": true, - "alertnessTimeConstant": 3, - "shotsBaseScatter": 5, - "aimMethodRange": 3000 - }, - "TPZ": { - "name": "TPZ", - "coalition": "blue", - "era": "Late Cold War", - "label": "TPz Fuchs", - "shortLabel": "TPz Fuchs", - "filename": "", - "type": "APC", - "enabled": true, - "acquisitionRange": 2500, - "engagementRange": 1000, - "description": "TPz Fuchs. Wheeled. 7.62 mm machine gun.", - "abilities": "Combined arms, Transport, Amphibious", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.8, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "Tigr_233036": { - "name": "Tigr_233036", - "coalition": "red", - "era": "Late Cold War", - "label": " LUV Tigr", - "shortLabel": " LUV Tigr", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Utility vehicle. Wheeled. Multi-Axle.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "Tor 9A331": { - "name": "Tor 9A331", - "coalition": "red", - "era": "Late Cold War", - "label": "SA-15 Gauntlet", - "shortLabel": "15", - "range": "Medium", - "filename": "", - "type": "SAM Site", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 25000, - "engagementRange": 12000, - "description": "SA-15 Gauntlet 9K330 Tor. Range/alt max: 12 km, 20,000 ft.", - "abilities": "Combined arms,", - "canTargetPoint": false, - "canRearm": false, - "tags": "Radar, CA", - "markerFile": "groundunit-sam" - }, - "Trolley bus": { - "name": "Trolley bus", - "coalition": "blue", - "era": "Late Cold War", - "label": "Trolley bus", - "shortLabel": "Trolley bus", - "filename": "", - "type": "Unarmed", - "enabled": true, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Civilian. Public transportation bus. Wheeled", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "UAZ-469": { - "name": "UAZ-469", - "coalition": "red", - "era": "Mid Cold War", - "label": "UAZ-469", - "shortLabel": "UAZ-469", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "red_spring": { - "name": "RED_Spring", - "countries": "All" - }, - "red_summer": { - "name": "RED_Summer", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "orange_spring": { - "name": "ORANGE_Spring", - "countries": "All" - }, - "orange_autumn": { - "name": "ORANGE_Autumn", - "countries": "All" - }, - "red_autumn": { - "name": "RED_Autumn", - "countries": "All" - }, - "red_winter": { - "name": "RED_Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "orange_summer": { - "name": "ORANGE_Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "orange_winter": { - "name": "ORANGE_Winter", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Light utility vehicle. Wheeled. 4x4", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "Uragan_BM-27": { - "name": "Uragan_BM-27", - "coalition": "red", - "era": "Late Cold War", - "label": "Bm-27 Uragan", - "shortLabel": "Uragan", - "filename": "", - "type": "Artillery", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 37000, - "description": "Uragan BM-27. Wheeled. 220 mm rocket artillery. 11km min range, 37 km max.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "220mm, Rocket, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "Ural ATsP-6": { - "name": "Ural ATsP-6", - "coalition": "red", - "era": "Mid Cold War", - "label": "Ural ATsP-6", - "shortLabel": "Ural ATsP-6", - "filename": "", - "type": "Unarmed", - "enabled": true, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military fire truck. Wheeled. ", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "Ural-375 PBU": { - "name": "Ural-375 PBU", - "coalition": "red", - "era": "Mid Cold War", - "label": "Ural-375 PBU", - "shortLabel": "Ural-375 PBU", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military command vehicle. Wheeled. Re-arming for FARPs", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "Re-Arming, FARP" - }, - "Ural-375 ZU-23 Insurgent": { - "name": "Ural-375 ZU-23 Insurgent", - "coalition": "red", - "era": "Early Cold War", - "label": "Ural-375 with ZU-23 Insurgent", - "shortLabel": "Ural-375 ZU-23 Insurgent", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 2000, - "description": "Ural ZU-23. Truck mounted ZU-23 23 mm gun manually aimed.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "shotsToFire": 5, - "aimTime": 8, - "muzzleVelocity": 1000, - "barrelHeight": 3, - "cost": null, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "aimMethodRange": 4000, - "targetingRange": 100, - "alertnessTimeConstant": 5, - "shotsBaseScatter": 5, - "shotsBaseInterval": 5 - }, - "Ural-375 ZU-23": { - "name": "Ural-375 ZU-23", - "coalition": "red", - "era": "Early Cold War", - "label": "Ural-375 with ZU-23", - "shortLabel": "Ural-375 ZU-23", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 2000, - "description": "Ural ZU-23. Truck mounted ZU-23 AAA 23 mm gun manually aimed.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "cost": null, - "barrelHeight": 3, - "muzzleVelocity": 1000, - "aimTime": 8, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "alertnessTimeConstant": 5, - "shotsBaseScatter": 5, - "shotsBaseInterval": 5, - "aimMethodRange": 4000, - "targetingRange": 100 - }, - "Ural-375": { - "name": "Ural-375", - "coalition": "red", - "era": "Mid Cold War", - "label": "Ural-375", - "shortLabel": "Ural-375", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military cargo truck. Wheeled. Refueling and Re-Arming for FARPs", - "abilities": "", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck", - "tags": "CA, Refueling, Re-Arming, FARP" - }, - "Ural-4320 APA-5D": { - "name": "Ural-4320 APA-5D", - "coalition": "red", - "era": "Early Cold War", - "label": "Ural-4320 APA-5D", - "shortLabel": "Ural-4320 APA-5D", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military cargo truck. Wheeled. 6x6", - "abilities": "", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck" - }, - "Ural-4320-31": { - "name": "Ural-4320-31", - "coalition": "red", - "era": "Late Cold War", - "label": "Ural-4320-31", - "shortLabel": "Ural-4320-31", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "abilities": "", - "description": "Military cargo truck. Wheeled. 6x6. Repair for FARPs", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck", - "tags": "Repair, FARP" - }, - "Ural-4320T": { - "name": "Ural-4320T", - "coalition": "red", - "era": "Late Cold War", - "label": "Ural-4320T", - "shortLabel": "Ural-4320T", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "abilities": "", - "description": "Military cargo truck. Wheeled. 6x6. Repair for FARPs", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck", - "tags": "Repair, FARP" - }, - "VAZ Car": { - "name": "VAZ Car", - "coalition": "red", - "era": "Early Cold War", - "label": "VAZ Car", - "shortLabel": "VAZ Car", - "filename": "", - "type": "Unarmed", - "enabled": true, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Civilian car. Wheeled", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "Vulcan": { - "name": "Vulcan", - "coalition": "blue", - "era": "Mid Cold War", - "label": "Vulcan", - "shortLabel": "Vulcan", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "usa_winter": { - "name": "USA_Winter", - "countries": "All" - }, - "isr_summer": { - "name": "ISR_Summer", - "countries": "All" - }, - "isr_spring": { - "name": "ISR_Spring", - "countries": "All" - }, - "usa_autumn": { - "name": "USA_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "isr_winter": { - "name": "ISR_Winter", - "countries": "All" - }, - "isr_autumn": { - "name": "ISR_Autumn", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "usa_summer": { - "name": "USA_Summer", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "usa_spring": { - "name": "USA_Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 2000, - "description": "M113 Vulcan. Tracked M113 APC with radar guided Vulcan 20 mm cannon.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "cost": null, - "barrelHeight": 2.5, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "Radar, CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "aimMethodRange": 4000, - "targetingRange": 100, - "alertnessTimeConstant": 5, - "shotsBaseScatter": 5, - "shotsBaseInterval": 5 - }, - "ZIL-131 KUNG": { - "name": "ZIL-131 KUNG", - "coalition": "red", - "era": "Early Cold War", - "label": "ZIL-131 KUNG", - "shortLabel": "ZIL-131 KUNG", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military truck. Wheeled. KUNG Narrow specialized Body. 6x6. Repair for FARPs", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "Repair, FARP" - }, - "ZIL-4331": { - "name": "ZIL-4331", - "coalition": "red", - "era": "Early Cold War", - "label": "ZIL-4331", - "shortLabel": "ZIL-4331", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military truck. Wheeled. 6x6", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "ZSU-23-4 Shilka": { - "name": "ZSU-23-4 Shilka", - "coalition": "red", - "era": "Mid Cold War", - "label": "ZSU-23-4 Shilka", - "shortLabel": "ZSU-23-4 Shilka", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "ukr_summer": { - "name": "UKR_Summer", - "countries": "All" - }, - "ukr_spring": { - "name": "UKR_Spring", - "countries": "All" - }, - "winter": { - "name": "Winter", - "countries": "All" - }, - "ukr_autumn": { - "name": "UKR_Autumn", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "grg_summer": { - "name": "GRG_Summer", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "grg_autumn": { - "name": "GRG_Autumn", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "ukr_winter": { - "name": "UKR_Winter", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "grg_winter": { - "name": "GRG_Winter", - "countries": "All" - }, - "grg_spring": { - "name": "GRG_Spring", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 8000, - "engagementRange": 2000, - "description": "ZSU-23-4 Shilka. Tracked. 4 x 23 mm radar guided autocannons.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 1.8, - "muzzleVelocity": 1000, - "aimTime": 9, - "shotsToFire": 5, - "cost": null, - "tags": "Radar, CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "aimMethodRange": 4000, - "targetingRange": 100, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "ZU-23 Closed Insurgent": { - "name": "ZU-23 Closed Insurgent", - "coalition": "red", - "era": "Early Cold War", - "label": "ZU-23 Closed Insurgent", - "shortLabel": "ZU-23 Closed Insurgent", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 2500, - "description": "ZSU-23. Fixed. Manually aimed AAA 23 mm autocannons. Sandbags.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2, - "muzzleVelocity": 1000, - "aimTime": 9, - "shotsToFire": 5, - "cost": null, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "alertnessTimeConstant": 5, - "shotsBaseScatter": 5, - "shotsBaseInterval": 5 - }, - "ZU-23 Emplacement Closed": { - "name": "ZU-23 Emplacement Closed", - "coalition": "red", - "era": "Early Cold War", - "label": "ZU-23 Emplacement Closed", - "shortLabel": "ZU-23 Emplacement Closed", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 2000, - "description": "ZSU-23. Fixed. Manually aimed AAA 23 mm autocannons. Sandbags.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "shotsToFire": 5, - "aimTime": 9, - "muzzleVelocity": 1000, - "barrelHeight": 1.5, - "cost": null, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "aimMethodRange": 4000, - "targetingRange": 100, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "ZU-23 Emplacement": { - "name": "ZU-23 Emplacement", - "coalition": "red", - "era": "Early Cold War", - "label": "ZU-23 Emplacement", - "shortLabel": "ZU-23 Emplacement", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "grc_summer": { - "name": "GRC_Summer", - "countries": "All" - }, - "grc_spring": { - "name": "GRC_Spring", - "countries": "All" - }, - "grc_autumn": { - "name": "GRC_Autumn", - "countries": "All" - }, - "grc_winter": { - "name": "GRC_Winter", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 2000, - "description": "ZSU-23. Fixed. Manually aimed AAA 23 mm autocannons.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "shotsToFire": 5, - "aimTime": 9, - "muzzleVelocity": 1000, - "barrelHeight": 1.5, - "cost": null, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "aimMethodRange": 4000, - "targetingRange": 100, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "ZU-23 Insurgent": { - "name": "ZU-23 Insurgent", - "coalition": "red", - "era": "Early Cold War", - "label": "ZU-23 Insurgent", - "shortLabel": "ZU-23 Insurgent", - "filename": "", - "type": "AAA", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 5000, - "engagementRange": 2000, - "description": "ZSU-23. Fixed. Manually aimed AAA 23 mm autocannons.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "shotsToFire": 5, - "aimTime": 9, - "muzzleVelocity": 1000, - "barrelHeight": 1.5, - "cost": null, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "aimMethodRange": 4000, - "targetingRange": 100 - }, - "ZiL-131 APA-80": { - "name": "ZiL-131 APA-80", - "coalition": "red", - "era": "Early Cold War", - "label": "ZiL-131 APA-80", - "shortLabel": "ZiL-131 APA-80", - "filename": "", - "type": "Unarmed", - "enabled": true, - "liveries": { - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military truck. Wheeled. Arctic Self-Loading Device. Power for FARPs", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "Power, FARP" - }, - "house1arm": { - "name": "house1arm", - "coalition": "", - "era": "", - "label": "house1arm", - "shortLabel": "house1arm", - "filename": "", - "type": "Structure", - "enabled": false, - "acquisitionRange": 0, - "engagementRange": 800, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "house2arm": { - "name": "house2arm", - "coalition": "", - "era": "", - "label": "house2arm", - "shortLabel": "house2arm", - "filename": "", - "type": "Structure", - "enabled": false, - "acquisitionRange": 0, - "engagementRange": 800, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "houseA_arm": { - "name": "houseA_arm", - "coalition": "", - "era": "", - "label": "houseA_arm", - "shortLabel": "houseA_arm", - "filename": "", - "type": "Structure", - "enabled": false, - "acquisitionRange": 0, - "engagementRange": 800, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "outpost": { - "name": "outpost", - "coalition": "", - "era": "", - "label": "outpost", - "shortLabel": "outpost", - "filename": "", - "type": "Structure", - "enabled": false, - "acquisitionRange": 0, - "engagementRange": 800, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "outpost_road": { - "name": "outpost_road", - "coalition": "", - "era": "", - "label": "outpost_road", - "shortLabel": "outpost_road", - "filename": "", - "type": "Structure", - "enabled": false, - "acquisitionRange": 0, - "engagementRange": 800, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "p-19 s-125 sr": { - "name": "p-19 s-125 sr", - "coalition": "red", - "era": "Mid Cold War", - "label": "SA-3 Flat Face B", - "shortLabel": "Flat Face B", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 160000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "snr s-125 tr": { - "name": "snr s-125 tr", - "coalition": "red", - "era": "Early Cold War", - "label": "SA-3 Low Blow", - "shortLabel": "snr s-125 tr", - "range": "Medium", - "filename": "", - "type": "SAM Site Parts", - "enabled": true, - "liveries": { - "winter": { - "name": "Winter", - "countries": "All" - }, - "spring": { - "name": "Spring", - "countries": "All" - }, - "rus_summer": { - "name": "RUS_Summer", - "countries": "All" - }, - "rus_winter": { - "name": "RUS_Winter", - "countries": "All" - }, - "summer": { - "name": "Summer", - "countries": "All" - }, - "rus_autumn": { - "name": "RUS_Autumn", - "countries": "All" - }, - "rus_spring": { - "name": "RUS_Spring", - "countries": "All" - }, - "autumn": { - "name": "Autumn", - "countries": "All" - }, - "desert": { - "name": "Desert", - "countries": "All" - } - }, - "acquisitionRange": 100000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "SpGH_Dana": { - "name": "SpGH_Dana", - "coalition": "red", - "era": "Late Cold War", - "label": "SpGH Dana 152mm", - "shortLabel": "SpGH Dana", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 18400, - "description": "SpGH Dana 77. Wheeled. Self propelled 152mm howitzer. 1km min range, 18km max.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "tags": "152mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "Grad_FDDM": { - "name": "Grad_FDDM", - "coalition": "red", - "era": "Mid Cold War", - "label": "MT-LBu ACRV", - "shortLabel": "MT-LBu ARCV", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 18500, - "description": "MT-LBu IV12 series tracked. Artillery command / recon vehicle, not an arty piece, speeds up artillery fire time in game when grouped.", - "abilities": "Combined arms, AA, Fast Artillery", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 3, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 2, - "tags": "Command, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "shotsBaseInterval": 10, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "Infantry AK Ins": { - "name": "Infantry AK Ins", - "coalition": "red", - "era": "Early Cold War", - "label": "Insurgent AK-74", - "shortLabel": "AK-74 (Ins)", - "type": "Infantry", - "enabled": true, - "liveries": {}, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Insurgent solider carrying AK-74.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 0.9, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "Insurgent", - "markerFile": "groundunit-infantry", - "canAAA": true, - "aimMethodRange": 2000, - "targetingRange": 100, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "MLRS FDDM": { - "name": "MLRS FDDM", - "coalition": "blue", - "era": "Late Cold War", - "label": "HMMWV MLRS ACRV", - "shortLabel": "HMMWV ACRV", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 1200, - "description": "A Humvee artillery command/ recon vehicle, not an arty piece, speeds up MLRS fire time in game when grouped. 12.7 mm machine gun.", - "abilities": "Combined arms, AA, Fast Artillery", - "canTargetPoint": true, - "canRearm": false, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 2, - "barrelHeight": 2.49, - "tags": "Arty Command/Recon, CA", - "markerFile": "groundunit-artillery", - "indirectFire": false, - "shotsBaseInterval": 10, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "Infantry AK ver2": { - "name": "Infantry AK ver2", - "coalition": "red", - "era": "Late Cold War", - "label": "AK-74", - "shortLabel": "AK-74", - "type": "Infantry", - "enabled": true, - "liveries": {}, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Russian solider carrying AK-74.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 0.9, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "Russian type 2", - "markerFile": "groundunit-infantry", - "canAAA": true, - "aimMethodRange": 2000, - "targetingRange": 100, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Infantry AK ver3": { - "name": "Infantry AK ver3", - "coalition": "red", - "era": "Late Cold War", - "label": "AK-74", - "shortLabel": "AK-74", - "type": "Infantry", - "enabled": true, - "liveries": {}, - "acquisitionRange": 2500, - "engagementRange": 300, - "description": "Russian solider carrying AK-74.", - "abilities": "AA, Embark", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 0.9, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "Russian type 3", - "markerFile": "groundunit-infantry", - "canAAA": true, - "aimMethodRange": 2000, - "targetingRange": 100, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Smerch_HE": { - "name": "Smerch_HE", - "coalition": "red", - "era": "Mid Cold War", - "label": "BM-30 Smerch (HE)", - "shortLabel": "BM-30 Smerch", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 70000, - "description": "BM-30 9A52 Smerch. Wheeled. Multiple launch rocket system, 300 mm 9M55F rockets. 20km min range, 71 km max.", - "abilities": "Combined Arms, Indirect Fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "300mm, MLRS, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "Soldier stinger": { - "name": "Soldier stinger", - "coalition": "", - "era": "", - "label": "FIM-92 Stinger", - "shortLabel": "St", - "type": "SAM Site", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 4500, - "description": "Stinger IR MANPADS FIM-92. Range/alt max: 5 km, 15,000 ft.", - "abilities": "Combined arms,", - "canTargetPoint": false, - "canRearm": false, - "tags": "IR, CA, MANPADS", - "markerFile": "groundunit-sam" - }, - "SA-18 Igla-S comm": { - "name": "SA-18 Igla-S comm", - "coalition": "", - "era": "", - "label": "SA-18 Igla \"Grouse\" C2", - "shortLabel": "18", - "type": "SAM Site", - "enabled": false, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "MANPADS", - "markerFile": "groundunit-sam" - }, - "TACAN_beacon": { - "name": "TACAN_beacon", - "coalition": "", - "era": "", - "label": "Beacon TACAN Portable TTS 3030", - "shortLabel": "Beacon TACAN Portable TTS 3030", - "type": "Structure", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Merkava_Mk4": { - "name": "Merkava_Mk4", - "coalition": "blue", - "era": "Late Cold War", - "label": "Merkava IV", - "shortLabel": "Merkava IV", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm smoothbore MG253 main gun (APFSDS and HEAT), 7.62 mm machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 700, - "barrelHeight": 3.1, - "shotsBaseInterval": 6, - "shotsToFire": 5, - "aimTime": 5, - "tags": "CA", - "aimMethodRange": 3000, - "shotsBaseScatter": 5, - "canAAA": true, - "alertnessTimeConstant": 3 - }, - "LiAZ Bus": { - "name": "LiAZ Bus", - "coalition": "", - "era": "", - "label": "Bus LiAZ-677", - "shortLabel": "Bus LiAZ-677", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "KrAZ6322": { - "name": "KrAZ6322", - "coalition": "", - "era": "", - "label": "Truck KrAZ-6322 6x6", - "shortLabel": "Truck KrAZ-6322 6x6", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military cargo truck. Wheeled. 6x6", - "abilities": "", - "canTargetPoint": false, - "canRearm": true, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "JTAC": { - "name": "JTAC", - "coalition": "", - "era": "", - "label": "JTAC", - "shortLabel": "JTAC", - "type": "Infantry", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-infantry" - }, - "Electric locomotive": { - "name": "Electric locomotive", - "coalition": "", - "era": "", - "label": "VL80 Electric", - "shortLabel": "VL80 Electric", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Loco" - }, - "Locomotive": { - "name": "Locomotive", - "coalition": "", - "era": "", - "label": "CHME3T", - "shortLabel": "CHME3T", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Loco" - }, - "Coach cargo": { - "name": "Coach cargo", - "coalition": "", - "era": "", - "label": "Freight Van", - "shortLabel": "Freight Van", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "Coach cargo open": { - "name": "Coach cargo open", - "coalition": "", - "era": "", - "label": "Open Wagon", - "shortLabel": "Open Wagon", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "Coach a tank blue": { - "name": "Coach a tank blue", - "coalition": "", - "era": "", - "label": "Car blue", - "shortLabel": "Car blue", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "Coach a tank yellow": { - "name": "Coach a tank yellow", - "coalition": "", - "era": "", - "label": "Car yellow", - "shortLabel": "Car yellow", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "Coach a passenger": { - "name": "Coach a passenger", - "coalition": "", - "era": "", - "label": "Passenger Car", - "shortLabel": "Passenger Car", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "Coach a platform": { - "name": "Coach a platform", - "coalition": "", - "era": "", - "label": "Coach Platform", - "shortLabel": "Coach Platform", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "tacr2a": { - "name": "tacr2a", - "coalition": "", - "era": "", - "label": "RAF Rescue", - "shortLabel": "RAF Rescue", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Fire and Rescue vehicle. Wheeled", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "LARC-V": { - "name": "LARC-V", - "coalition": "", - "era": "", - "label": "LARC-V", - "shortLabel": "LARC-V", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 500, - "engagementRange": 0, - "description": "Amphibious cargo vehicle.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "KS-19": { - "name": "KS-19", - "coalition": "", - "era": "Early Cold War", - "label": "KS-19 100mm", - "shortLabel": "KS-19 100mm", - "type": "AAA", - "enabled": true, - "liveries": {}, - "acquisitionRange": 16000, - "engagementRange": 2000, - "description": "KS-19. 100 mm AAA gun. Fixed manually aimed large calibre anti aircraft gun.", - "abilities": "AA", - "canTargetPoint": false, - "canRearm": false, - "muzzleVelocity": 1000, - "aimTime": 25, - "shotsToFire": 5, - "barrelHeight": 5, - "cost": null, - "markerFile": "groundunit-aaa", - "canAAA": true, - "targetingRange": 100, - "aimMethodRange": 15000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "SON_9": { - "name": "SON_9", - "coalition": "red", - "era": "Early Cold War", - "label": "Fire Can SON-9", - "shortLabel": "Fire Can SON-9", - "type": "AAA", - "enabled": true, - "liveries": {}, - "acquisitionRange": 92600, - "engagementRange": null, - "description": "SON-9 Fire Can. Gun laying radar, not AAA. Can be used to direct fire of up to 4 AAA guns if grouped with them.", - "abilities": "Fire Director", - "canTargetPoint": false, - "canRearm": false, - "cost": null, - "tags": "Radar", - "markerFile": "groundunit-aaa", - "canAAA": false - }, - "Scud_B": { - "name": "Scud_B", - "coalition": "", - "era": "", - "label": "SS-1C Scud-B", - "shortLabel": "Scud-B", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 283000, - "description": "SS-1C Scud-B wheeled vehicle firing R-17 tactical ballistic missile. 50 km min range, 300 km max. Approx 700 m CEP. Long setup time, check if the stabilisers are moving to see if launch command worked.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "tags": "Ballistic Missile", - "markerFile": "groundunit-artillery", - "aimTime": 300, - "shotsToFire": 1, - "shotsBaseInterval": 300, - "shotsBaseScatter": 1, - "alertnessTimeConstant": 10 - }, - "HL_DSHK": { - "name": "HL_DSHK", - "coalition": "red", - "era": "Late Cold War", - "label": "Technical DSHK 12.7mm", - "shortLabel": "Technical DSHK 12.7mm", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": {}, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "Technical. Car with DSHK 12.7 mm gun manually aimed.", - "abilities": "Combined arms,", - "canTargetPoint": true, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-tactical", - "targetingRange": 100, - "aimMethodRange": 2500, - "barrelHeight": 2, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true, - "muzzleVelocity": 900 - }, - "HL_KORD": { - "name": "HL_KORD", - "coalition": "red", - "era": "Late Cold War", - "label": "Technical KORD 12.7mm", - "shortLabel": "Technical KORD 12.7mm", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": {}, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "Technical. Car with KORD 12.7 mm gun manually aimed.", - "abilities": "Combined arms,", - "canTargetPoint": true, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-tactical", - "targetingRange": 100, - "aimMethodRange": 2500, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true, - "barrelHeight": 2, - "muzzleVelocity": 900 - }, - "tt_DSHK": { - "name": "tt_DSHK", - "coalition": "red", - "era": "Late Cold War", - "label": "Pickup DSHK 12.7mm", - "shortLabel": "Pickup DSHK 12.7mm", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": {}, - "acquisitionRange": 300, - "engagementRange": 1000, - "description": "Technical. Car with DSHK 12.7 mm gun manually aimed.", - "abilities": "Combined arms,", - "canTargetPoint": true, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-tactical", - "targetingRange": 100, - "aimMethodRange": 2500, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true, - "barrelHeight": 2, - "muzzleVelocity": 900 - }, - "tt_KORD": { - "name": "tt_KORD", - "coalition": "red", - "era": "Mid Cold War", - "label": "Pickup KORD 12.7mm", - "shortLabel": "Pickup KORD 12.7mm", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": {}, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "Technical. Car with KORD 12.7 mm gun manually aimed.", - "abilities": "Combined arms,", - "canTargetPoint": true, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-tactical", - "targetingRange": 100, - "aimMethodRange": 2500, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true, - "barrelHeight": 2, - "muzzleVelocity": 900 - }, - "HL_ZU-23": { - "name": "HL_ZU-23", - "coalition": "red", - "era": "Early Cold War", - "label": "Technical with ZU-23", - "shortLabel": "Technical with ZU-23", - "type": "AAA", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 2500, - "description": "Technical. Car with ZSU-23 23 mm gun manually aimed.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "cost": null, - "barrelHeight": 2, - "muzzleVelocity": 1000, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "aimMethodRange": 4000, - "targetingRange": 200, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "tt_ZU-23": { - "name": "tt_ZU-23", - "coalition": "red", - "era": "Early Cold War", - "label": "Pickup with ZU-23", - "shortLabel": "Pickup with ZU-23", - "type": "AAA", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 2000, - "description": "Box car with ZU-23 AAA 23mm gun manually aimed.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": true, - "cost": null, - "barrelHeight": 2, - "muzzleVelocity": 1000, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "alertnessTimeConstant": 5, - "shotsBaseScatter": 5, - "shotsBaseInterval": 5, - "aimMethodRange": 4500, - "targetingRange": 100 - }, - "HL_B8M1": { - "name": "HL_B8M1", - "coalition": "red", - "era": "Mid Cold War", - "label": "Technical B8M1", - "shortLabel": "Technical B8M1", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 4900, - "description": "Technical with a B8M1 80mm rocket pod on the back. 1km min range, max 15km.", - "abilities": "Combined Arms, Indirect Fire.", - "canTargetPoint": true, - "canRearm": false, - "tags": "Rocket, CA", - "markerFile": "groundunit-artillery", - "shotsToFire": 2, - "shotsBaseInterval": 30, - "aimTime": 120, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10, - "indirectFire": true - }, - "tt_B8M1": { - "name": "tt_B8M1", - "coalition": "red", - "era": "Mid Cold War", - "label": "Pickup B8M1", - "shortLabel": "Pickup B8M1", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 5000, - "description": "Pickup truck with B8M1 80mm rocket launcher. 1km min range, 15km max.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "80mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "NASAMS_Radar_MPQ64F1": { - "name": "NASAMS_Radar_MPQ64F1", - "coalition": "", - "era": "", - "label": "SAM NASAMS SR MPQ64F1", - "shortLabel": "SAM NASAMS SR MPQ64F1", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 50000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": "no", - "canRearm": "no", - "markerFile": "groundunit-sam-radar" - }, - "NASAMS_Command_Post": { - "name": "NASAMS_Command_Post", - "coalition": "", - "era": "", - "label": "SAM NASAMS C2", - "shortLabel": "SAM NASAMS C2", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "NASAMS_LN_B": { - "name": "NASAMS_LN_B", - "coalition": "", - "era": "", - "label": "SAM NASAMS LN AIM-120B", - "shortLabel": "SAM NASAMS LN AIM-120B", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 15000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "NASAMS_LN_C": { - "name": "NASAMS_LN_C", - "coalition": "", - "era": "", - "label": "SAM NASAMS LN AIM-120C", - "shortLabel": "SAM NASAMS LN AIM-120C", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 15000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "M4_Sherman": { - "name": "M4_Sherman", - "coalition": "blue", - "era": "WW2", - "label": "Tk M4 Sherman", - "shortLabel": "Tk M4 Sherman", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 2500, - "engagementRange": 1000, - "description": "Medium tank. Tracked. 75 mm gun (AP and HE), 0.50 caliber coax machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 650, - "barrelHeight": 2.74, - "shotsBaseInterval": 5, - "tags": "CA", - "shotsToFire": 5, - "aimTime": 5, - "aimMethodRange": 2000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 8, - "canAAA": false - }, - "M2A1_halftrack": { - "name": "M2A1_halftrack", - "coalition": "blue", - "era": "WW2", - "label": "M2A1 Halftrack", - "shortLabel": "M2A1 Halftrack", - "type": "APC", - "enabled": true, - "liveries": {}, - "acquisitionRange": 2500, - "engagementRange": 1000, - "description": "M2 A1. Half tracked. 12.7 mm and 7.7 mm machine gun.", - "abilities": "Combined arms, Transport", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.6, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "FPS-117 Dome": { - "name": "FPS-117 Dome", - "coalition": "blue", - "era": "Late Cold War", - "label": "AN/FPS-117 EWR", - "shortLabel": "AN/FPS-117 (Dome)", - "type": "Radar (EWR)", - "enabled": true, - "liveries": {}, - "acquisitionRange": 400000, - "engagementRange": 0, - "description": "AN/FPS-117 early warning radar in a domed building", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Dome", - "markerFile": "groundunit-ewr" - }, - "FPS-117 ECS": { - "name": "FPS-117 ECS", - "coalition": "blue", - "era": "Late Cold War", - "label": "AN/FPS-117 ECS", - "shortLabel": "ECS", - "type": "Radar (EWR)", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "AN/FPS-117 engagement control station, this is not a radar", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "C&C", - "markerFile": "groundunit-ewr" - }, - "FPS-117": { - "name": "FPS-117", - "coalition": "blue", - "era": "Late Cold War", - "label": "AN/FPS-117 EWR", - "shortLabel": "AN/FPS-117", - "type": "Radar (EWR)", - "enabled": true, - "liveries": {}, - "acquisitionRange": 463000, - "engagementRange": 0, - "description": "AN/FPS-117 early warning radar on a large metal platform", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-ewr" - }, - "RD_75": { - "name": "RD_75", - "coalition": "", - "era": "", - "label": "SA-2 S-75 RD-75 Amazonka RF", - "shortLabel": "SAM SA-2 S-75 RD-75 Amazonka RF", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 100000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "ZSU_57_2": { - "name": "ZSU_57_2", - "coalition": "red", - "era": "Early Cold War", - "label": "ZSU-57-2", - "shortLabel": "ZSU-57-2", - "type": "AAA", - "enabled": true, - "liveries": {}, - "acquisitionRange": 10000, - "engagementRange": 3000, - "description": "ZSU-57-2. Tracked self propelled optically guided AA gun. 2 x 57 mm auto cannon.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "muzzleVelocity": 1200, - "barrelHeight": 3, - "aimTime": 20, - "shotsToFire": 5, - "cost": null, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "aimMethodRange": 9000, - "targetingRange": 100, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "S-60_Type59_Artillery": { - "name": "S-60_Type59_Artillery", - "coalition": "red", - "era": "Early Cold War", - "label": "S-60 57mm", - "shortLabel": "S-60 57mm", - "type": "AAA", - "enabled": true, - "liveries": {}, - "acquisitionRange": 6000, - "engagementRange": 6000, - "description": "AZP S-60. Fixed. Automatic anti aircraft gun 57mm.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "muzzleVelocity": 1000, - "aimTime": 5, - "shotsToFire": 5, - "barrelHeight": 2, - "cost": null, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "alertnessTimeConstant": 5, - "shotsBaseScatter": 5, - "shotsBaseInterval": 5, - "aimMethodRange": 5000, - "targetingRange": 2000 - }, - "generator_5i57": { - "name": "generator_5i57", - "coalition": "", - "era": "", - "label": "Diesel Power Station 5I57A", - "shortLabel": "Diesel Power Station 5I57A", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Diesel Power station.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "T-72B3": { - "name": "T-72B3", - "coalition": "red", - "era": "Late Cold War", - "label": "T-72B3", - "shortLabel": "T-72B3", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 125 mm 2A46M smoothbore gun (APFSDS and HEAT), 7.62 mm PKT coaxial machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 700, - "barrelHeight": 2.7, - "shotsBaseInterval": 8, - "shotsToFire": 5, - "aimTime": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 3, - "aimMethodRange": 3000, - "canAAA": true, - "tags": "" - }, - "PT_76": { - "name": "PT_76", - "coalition": "red", - "era": "Early Cold War", - "label": "LT PT-76", - "shortLabel": "LT PT-76", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "Amphibious Light tank. Tracked. 76.2 mm D-56T smoothbore gun (AP and HE), 7.62 mm coaxial machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "tags": "CA, Amphibious", - "targetingRange": 100, - "muzzleVelocity": 625, - "barrelHeight": 1.85, - "shotsBaseInterval": 9, - "shotsToFire": 5, - "aimTime": 5, - "aimMethodRange": 2000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 9 - }, - "BTR-82A": { - "name": "BTR-82A", - "coalition": "red", - "era": "Modern", - "label": "BTR-82A", - "shortLabel": "BTR-82A", - "type": "APC", - "enabled": true, - "liveries": {}, - "acquisitionRange": 3000, - "engagementRange": 1000, - "description": "BTR 82A APC. Wheeled. Amphibious. 30 mm gun.", - "abilities": "Combined arms, Amphibious, Transport, AA", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.8, - "muzzleVelocity": 900, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2500, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5, - "canAAA": true - }, - "ATZ-5": { - "name": "ATZ-5", - "coalition": "red", - "era": "Early Cold War", - "label": "ATZ-5", - "shortLabel": "ATZ-5 Fuel", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Refueler truck. Wheeled. Refueling for FARPs", - "abilities": "Combined arms, Refuel", - "canTargetPoint": false, - "canRearm": false, - "tags": "Military, CA, Refueling, FARP", - "markerFile": "groundunit-truck" - }, - "AA8": { - "name": "AA8", - "coalition": "", - "era": "Early Cold War", - "label": "Fire truck AA-7", - "shortLabel": "Fire truck", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Fire truck. Wheeled. Red", - "abilities": "Combined Arms", - "canTargetPoint": false, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-truck" - }, - "TZ-22_KrAZ": { - "name": "TZ-22_KrAZ", - "coalition": "", - "era": "", - "label": "Refueler TZ-22 Tractor", - "shortLabel": "Refueler TZ-22 Tractor (KrAZ-258B1)", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Refueler vehicle. Wheeled. Tractor. Only the cab portion no trailers", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-truck" - }, - "ATZ-60_Maz": { - "name": "ATZ-60_Maz", - "coalition": "red", - "era": "Early Cold War", - "label": "ATZ-60 Maz", - "shortLabel": "ATZ-60 Maz", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Wheeled truck. Only the cab portion no trailers.", - "abilities": "Combined arms", - "canTargetPoint": false, - "canRearm": false, - "tags": "Military, CA", - "markerFile": "groundunit-truck" - }, - "ZIL-135": { - "name": "ZIL-135", - "coalition": "", - "era": "", - "label": "Truck ZIL-135", - "shortLabel": "Truck ZIL-135", - "type": "Unarmed", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "S_75_ZIL": { - "name": "S_75_ZIL", - "coalition": "", - "era": "", - "label": "S-75 Tractor", - "shortLabel": "S-75 Tractor (ZIL-131)", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Refueler vehicle. Wheeled. Tractor. Only the cab portion no trailers", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-truck" - }, - "rapier_fsa_launcher": { - "name": "rapier_fsa_launcher", - "coalition": "", - "era": "", - "label": "SAM Rapier LN", - "shortLabel": "SAM Rapier LN", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 30000, - "engagementRange": 6800, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "rapier_fsa_optical_tracker_unit": { - "name": "rapier_fsa_optical_tracker_unit", - "coalition": "", - "era": "", - "label": "SAM Rapier Tracker", - "shortLabel": "SAM Rapier Tracker", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 20000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "rapier_fsa_blindfire_radar": { - "name": "rapier_fsa_blindfire_radar", - "coalition": "", - "era": "", - "label": "SAM Rapier Blindfire TR", - "shortLabel": "SAM Rapier Blindfire TR", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 30000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "bofors40": { - "name": "bofors40", - "coalition": "blue", - "era": "WW2", - "label": "Bofors 40mm", - "shortLabel": "Bofor", - "type": "AAA", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 3000, - "description": "Bofors gun. Fixed anti aircraft 40mm gun. Manually aimed.", - "abilities": "Combined arms, AA", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 1.35, - "muzzleVelocity": 850, - "aimTime": 8, - "shotsToFire": 2, - "cost": null, - "tags": "CA", - "markerFile": "groundunit-aaa", - "canAAA": true, - "shotsBaseScatter": 5, - "shotsBaseInterval": 10, - "alertnessTimeConstant": 15, - "targetingRange": 200, - "aimMethodRange": 4000 - }, - "Chieftain_mk3": { - "name": "Chieftain_mk3", - "coalition": "blue", - "era": "Late Cold War", - "label": "Chieftain Mk.3", - "shortLabel": "Chieftain Mk.3", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 4000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm rifled main gun (APFSDS and HESH), 7.62 mm coax machine gun.", - "abilities": "Combined arms", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 1.7, - "muzzleVelocity": 800, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-tank", - "shotsBaseInterval": 7, - "targetingRange": 100, - "aimMethodRange": 3000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 2 - }, - "Bedford_MWD": { - "name": "Bedford_MWD", - "coalition": "blue", - "era": "WW2", - "label": "Truck Bedford", - "shortLabel": "Truck Bedford", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military cargo truck. Wheeled.", - "abilities": "Combined arms, Rearm", - "canTargetPoint": false, - "canRearm": true, - "tags": "Military, CA", - "markerFile": "groundunit-truck" - }, - "Land_Rover_101_FC": { - "name": "Land_Rover_101_FC", - "coalition": "", - "era": "", - "label": "Truck Land Rover 101 FC", - "shortLabel": "Truck Land Rover 101 FC", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Light utility truck. Wheeled. 4x4 ", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "Land_Rover_109_S3": { - "name": "Land_Rover_109_S3", - "coalition": "", - "era": "", - "label": "LUV Land Rover 109", - "shortLabel": "LUV Land Rover 109", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Light utility vehicle. Wheeled.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "hy_launcher": { - "name": "hy_launcher", - "coalition": "red", - "era": "Mid Cold War", - "label": "SS-N 2 Silkworm", - "shortLabel": "SS-N 2 Silkworm", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 100000, - "engagementRange": 100000, - "description": "SS-N 2 Silkworm anti ship missile launcher. Max range 100 km. Must be grouped with SS-N 2 search radar to function.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "tags": "Missile Launcher", - "markerFile": "groundunit-artillery", - "unitWhenGrouped": "N2", - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 10, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "Silkworm_SR": { - "name": "Silkworm_SR", - "coalition": "", - "era": "", - "label": "SS-N 2 Silkworm Radar", - "shortLabel": "SS-N 2 SR", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 200000, - "engagementRange": 0, - "description": "SS-N 2 Silkworm anti ship search radar. Must be grouped with SS N-2 missile launcher.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Missile Search Radar", - "markerFile": "groundunit-artillery", - "unitWhenGrouped": "N2" - }, - "ES44AH": { - "name": "ES44AH", - "coalition": "", - "era": "", - "label": "ES44AH", - "shortLabel": "ES44AH", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Loco" - }, - "Boxcartrinity": { - "name": "Boxcartrinity", - "coalition": "", - "era": "Mid Cold War", - "label": "Flatcar", - "shortLabel": "Flatcar", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Train carriage flatcar, modern train container (red)", - "abilities": "Train, Carriage", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "Tankcartrinity": { - "name": "Tankcartrinity", - "coalition": "", - "era": "", - "label": "Cartrinity", - "shortLabel": "Cartrinity", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "Wellcarnsc": { - "name": "Wellcarnsc", - "coalition": "", - "era": "", - "label": "Well Car", - "shortLabel": "Well Car", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Carriage" - }, - "flak18": { - "name": "flak18", - "coalition": "", - "era": "WW2", - "label": "8.8cm Flak 18", - "shortLabel": "8.8cm Flak 18", - "type": "AAA", - "enabled": true, - "liveries": {}, - "aimTime": 18, - "shotsToFire": 5, - "acquisitionRange": 8000, - "engagementRange": 1000, - "description": "The flak 88. Fixed anti aircraft gun famously also used as an anti-tank gun. 88mm flak gun.", - "abilities": "AA", - "canTargetPoint": true, - "canRearm": false, - "muzzleVelocity": 880, - "barrelHeight": 2.1, - "cost": 40000, - "markerFile": "groundunit-aaa", - "canAAA": true, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "aimMethodRange": 100, - "targetingRange": 7000, - "alertnessTimeConstant": 5 - }, - "Pz_IV_H": { - "name": "Pz_IV_H", - "coalition": "red", - "era": "WW2", - "label": "Tk PzIV H", - "shortLabel": "Tk PzIV H", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 2500, - "engagementRange": 1000, - "description": "Medium tank. Tracked. 75 mm KwK 40 L/48 gun (AP and HE), 7.92 mm MG34 coaxial machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 700, - "barrelHeight": 2.68, - "shotsBaseInterval": 4, - "shotsToFire": 5, - "aimTime": 5, - "tags": "CA", - "aimMethodRange": 2000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 9 - }, - "Leopard-2A5": { - "name": "Leopard-2A5", - "coalition": "blue", - "era": "Late Cold War", - "label": "Leopard-2A5", - "shortLabel": "Leopard-2A5", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm smoothbore L/55 main gun (APFSDS and HEAT), 7.62 mm coaxial machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "aimMethodRange": 3000, - "barrelHeight": 2.7, - "muzzleVelocity": 700, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 6, - "tags": "CA", - "shotsBaseScatter": 5, - "alertnessTimeConstant": 3, - "canAAA": true - }, - "leopard-2A4": { - "name": "leopard-2A4", - "coalition": "blue", - "era": "Late Cold War", - "label": "Leopard-2A4", - "shortLabel": "Leopard-2A4", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm smoothbore L/44 main gun (APFSDS and HEAT), 7.62 mm machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 700, - "barrelHeight": 2.7, - "shotsBaseInterval": 7, - "tags": "CA", - "aimTime": 5, - "shotsToFire": 5, - "aimMethodRange": 3000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 3, - "canAAA": true - }, - "leopard-2A4_trs": { - "name": "leopard-2A4_trs", - "coalition": "blue", - "era": "Late Cold War", - "label": "Leopard-2A4 Trs", - "shortLabel": "Leopard-2A4 Trs", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 120 mm smoothbore L/44 main gun (APFSDS and HEAT), 7.62 mm machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 700, - "barrelHeight": 2.7, - "shotsBaseInterval": 7, - "shotsToFire": 5, - "aimTime": 5, - "tags": "CA", - "aimMethodRange": 3000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 3, - "canAAA": true - }, - "Sd_Kfz_251": { - "name": "Sd_Kfz_251", - "coalition": "red", - "era": "WW2", - "label": "Sd.Kfz.251 Halftrack", - "shortLabel": "Sd.Kfz.251 Halftrack", - "type": "APC", - "enabled": true, - "liveries": {}, - "acquisitionRange": 2500, - "engagementRange": 1000, - "description": "Sd.Kfz.251. Half tracked. 7.92 mm machine gun.", - "abilities": "Combined arms, Transport", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.2, - "muzzleVelocity": 765, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 2000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "Blitz_36-6700A": { - "name": "Blitz_36-6700A", - "coalition": "red", - "era": "WW2", - "label": "Truck Opel Blitz", - "shortLabel": "Truck Opel Blitz", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Military cargo truck. Wheeled.", - "abilities": "Combined arms, Rearm", - "canTargetPoint": false, - "canRearm": true, - "tags": "Military, CA", - "markerFile": "groundunit-truck" - }, - "T155_Firtina": { - "name": "T155_Firtina", - "coalition": "blue", - "era": "Modern", - "label": "SPH T155 Firtina", - "shortLabel": "T155 Firtina", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 40000, - "description": "SPH T155 Firtina. Tracked. Self propelled 155mm howitzer. 1km min range, 40km max.", - "abilities": "Combined arms, Indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "155mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "VAB_Mephisto": { - "name": "VAB_Mephisto", - "coalition": "blue", - "era": "Late Cold War", - "label": "VAB Mephisto", - "shortLabel": "VAB Mephisto", - "type": "Tactical Vehicle", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3800, - "description": "VAB Mephisto. Wheeled vehicle armed with 4 x HOT 2 missiles.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "CA", - "markerFile": "groundunit-tactical" - }, - "ZTZ96B": { - "name": "ZTZ96B", - "coalition": "red", - "era": "Late Cold War", - "label": "Type 96B", - "shortLabel": "Type 96B", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 125 mm smoothbore gun (APFSDS and HEAT), 7.62 mm Type 86H-7 machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.9, - "muzzleVelocity": 700, - "aimTime": 5, - "shotsToFire": 5, - "markerFile": "groundunit-tank", - "shotsBaseInterval": 7, - "tags": "CA", - "targetingRange": 100, - "alertnessTimeConstant": 3, - "shotsBaseScatter": 5, - "aimMethodRange": 3000, - "canAAA": true - }, - "ZBD04A": { - "name": "ZBD04A", - "coalition": "red", - "era": "Late Cold War", - "label": "ZBD-04A IFV", - "shortLabel": "ZBD-04A", - "type": "APC", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Type 04 Infantry Fighting Vehicle. Tracked. 100 mm gun, 30 mm gun, AT-10 missile.", - "abilities": "Combined arms, Transport", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2.5, - "muzzleVelocity": 1000, - "aimTime": 5, - "shotsToFire": 5, - "tags": "CA", - "markerFile": "groundunit-apc", - "targetingRange": 100, - "aimMethodRange": 4000, - "shotsBaseInterval": 5, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 5 - }, - "HQ-7_LN_SP": { - "name": "HQ-7_LN_SP", - "coalition": "", - "era": "", - "label": "HQ-7 Self-Propelled LN", - "shortLabel": "HQ-7 Self-Propelled LN", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 15000, - "engagementRange": 15000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "HQ-7_LN_EO": { - "name": "HQ-7_LN_EO", - "coalition": "", - "era": "", - "label": "HQ-7 LN Electro-Optics", - "shortLabel": "HQ-7 LN Electro-Optics", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 8000, - "engagementRange": 12000, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "HQ-7_STR_SP": { - "name": "HQ-7_STR_SP", - "coalition": "", - "era": "", - "label": "HQ-7 Self-Propelled STR", - "shortLabel": "HQ-7 Self-Propelled STR", - "type": "SAM Site Parts", - "enabled": true, - "liveries": {}, - "acquisitionRange": 30000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-sam-radar" - }, - "PLZ05": { - "name": "PLZ05", - "coalition": "red", - "era": "Modern", - "label": "PLZ-05", - "shortLabel": "PLZ-05", - "type": "Artillery", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 22000, - "description": "PLZ-05 or the Type 05 tracked self propelled howitzer. 155 mm main gun with 12.7 mm machine gun. 1km min range, 22km max.", - "abilities": "Combined arms, indirect fire", - "canTargetPoint": true, - "canRearm": false, - "tags": "155mm, CA", - "markerFile": "groundunit-artillery", - "indirectFire": true, - "aimTime": 120, - "shotsToFire": 2, - "shotsBaseInterval": 30, - "shotsBaseScatter": 15, - "alertnessTimeConstant": 10 - }, - "TYPE-59": { - "name": "TYPE-59", - "coalition": "red", - "era": "Early Cold War", - "label": "Type 59", - "shortLabel": "Type 59", - "type": "Tank", - "enabled": true, - "liveries": {}, - "acquisitionRange": 5000, - "engagementRange": 1000, - "description": "Main battle tank. Tracked. 100 mm Type 59 rifled gun (AP and HE), 7.62 mm Type 59T machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank", - "targetingRange": 100, - "muzzleVelocity": 700, - "barrelHeight": 2.5, - "aimTime": 5, - "shotsToFire": 5, - "shotsBaseInterval": 10, - "tags": "CA", - "aimMethodRange": 3000, - "shotsBaseScatter": 5, - "alertnessTimeConstant": 6, - "canAAA": true - }, - "Kubelwagen_82": { - "name": "Kubelwagen_82", - "coalition": "", - "era": "", - "label": "LUV Kubelwagen Jeep", - "shortLabel": "LUV Kubelwagen Jeep", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Light utility vehicle. Wheeled.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "Sd_Kfz_2": { - "name": "Sd_Kfz_2", - "coalition": "", - "era": "", - "label": "LUV Kettenrad", - "shortLabel": "LUV Kettenrad", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Light utility vehicle. Tracked.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "Sd_Kfz_7": { - "name": "Sd_Kfz_7", - "coalition": "", - "era": "", - "label": "Tractor Sd.Kfz.7 Art'y Tractor", - "shortLabel": "Tractor Sd.Kfz.7 Art'y Tractor", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Artillery tractor. Tracked.", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "Horch_901_typ_40_kfz_21": { - "name": "Horch_901_typ_40_kfz_21", - "coalition": "", - "era": "", - "label": "LUV Horch 901 Staff Car", - "shortLabel": "LUV Horch 901 Staff Car", - "type": "Unarmed", - "enabled": true, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "Staff Car. Wheeled. Transportation of military personnel and officers", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck", - "tags": "CA" - }, - "Tiger_I": { - "name": "Tiger_I", - "coalition": "", - "era": "", - "label": "Tk Tiger 1", - "shortLabel": "Tk Tiger 1", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "Tiger_II_H": { - "name": "Tiger_II_H", - "coalition": "", - "era": "", - "label": "Tk Tiger II", - "shortLabel": "Tk Tiger II", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 6000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "Pz_V_Panther_G": { - "name": "Pz_V_Panther_G", - "coalition": "", - "era": "", - "label": "Tk Panther G", - "shortLabel": "Tk Panther G (Pz V)", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "tags": "Pz V", - "markerFile": "groundunit-tank" - }, - "Jagdpanther_G1": { - "name": "Jagdpanther_G1", - "coalition": "", - "era": "", - "label": "Self Propelled Gun Jagdpanther TD", - "shortLabel": "Self Propelled Gun Jagdpanther TD", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 5000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "JagdPz_IV": { - "name": "JagdPz_IV", - "coalition": "", - "era": "", - "label": "Self Propelled Gun Jagdpanzer IV TD", - "shortLabel": "Self Propelled Gun Jagdpanzer IV TD", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "Stug_IV": { - "name": "Stug_IV", - "coalition": "", - "era": "", - "label": "Self Propelled Gun StuG IV AG", - "shortLabel": "Self Propelled Gun StuG IV AG", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "SturmPzIV": { - "name": "SturmPzIV", - "coalition": "", - "era": "", - "label": "Self Propelled Gun Brummbaer AG", - "shortLabel": "Self Propelled Gun Brummbaer AG", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 4500, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "Wespe124": { - "name": "Wespe124", - "coalition": "", - "era": "", - "label": "SPH Sd.Kfz.124 Wespe 105mm", - "shortLabel": "SPH Sd.Kfz.124 Wespe 105mm", - "type": "Artillery", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 10500, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-artillery" - }, - "Sd_Kfz_234_2_Puma": { - "name": "Sd_Kfz_234_2_Puma", - "coalition": "", - "era": "", - "label": "Scout Puma AC", - "shortLabel": "Scout Puma AC", - "type": "Armoured Car", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 2000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false - }, - "KDO_Mod40": { - "name": "KDO_Mod40", - "coalition": "", - "era": "", - "label": "AAA Kdo.G.40", - "shortLabel": "AAA Kdo.G.40", - "type": "AAA", - "enabled": false, - "liveries": {}, - "acquisitionRange": 30000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-aaa", - "canAAA": true - }, - "Flakscheinwerfer_37": { - "name": "Flakscheinwerfer_37", - "coalition": "", - "era": "", - "label": "SL Flakscheinwerfer 37", - "shortLabel": "SL Flakscheinwerfer 37", - "type": "AAA", - "enabled": false, - "liveries": {}, - "acquisitionRange": 15000, - "engagementRange": 15000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-aaa", - "canAAA": true - }, - "Maschinensatz_33": { - "name": "Maschinensatz_33", - "coalition": "", - "era": "", - "label": "Maschinensatz 33 Gen", - "shortLabel": "Maschinensatz 33 Gen", - "type": "AAA", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-aaa", - "canAAA": true - }, - "soldier_mauser98": { - "name": "soldier_mauser98", - "coalition": "", - "era": "", - "label": "Infantry Mauser 98", - "shortLabel": "Infantry Mauser 98", - "type": "Infantry", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 500, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-infantry" - }, - "SK_C_28_naval_gun": { - "name": "SK_C_28_naval_gun", - "coalition": "", - "era": "", - "label": "Gun 15cm SK C/28 Naval in Bunker", - "shortLabel": "Gun 15cm SK C/28 Naval in Bunker", - "type": "Artillery", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 20000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-artillery", - "indirectFire": true - }, - "fire_control": { - "name": "fire_control", - "coalition": "", - "era": "", - "label": "Bunker with Fire Control Center", - "shortLabel": "Bunker with Fire Control Center", - "type": "SAM Site Parts", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 1100, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Stug_III": { - "name": "Stug_III", - "coalition": "", - "era": "", - "label": "Self Propelled Gun StuG III G AG", - "shortLabel": "Self Propelled Gun StuG III G AG", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "Elefant_SdKfz_184": { - "name": "Elefant_SdKfz_184", - "coalition": "", - "era": "", - "label": "Self Propelled Gun Elefant TD", - "shortLabel": "Self Propelled Gun Elefant TD", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 6000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "v1_launcher": { - "name": "v1_launcher", - "coalition": "", - "era": "", - "label": "V-1 Launch Ramp", - "shortLabel": "V-1 Launch Ramp", - "type": "Missile System", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false - }, - "FuMG-401": { - "name": "FuMG-401", - "coalition": "", - "era": "", - "label": "FuMG-401 Freya LZ", - "shortLabel": "FuMG-401 Freya LZ", - "type": "Radar (EWR)", - "enabled": false, - "liveries": {}, - "acquisitionRange": 160000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "FuSe-65": { - "name": "FuSe-65", - "coalition": "", - "era": "", - "label": "FuSe-65 Würzburg-Riese", - "shortLabel": "FuSe-65 Würzburg-Riese", - "type": "Radar (EWR)", - "enabled": false, - "liveries": {}, - "acquisitionRange": 60000, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false - }, - "Pak40": { - "name": "Pak40", - "coalition": "", - "era": "", - "label": "FH Pak 40 75mm", - "shortLabel": "FH Pak 40 75mm", - "type": "Artillery", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-artillery" - }, - "LeFH_18-40-105": { - "name": "LeFH_18-40-105", - "coalition": "", - "era": "", - "label": "FH LeFH-18 105mm", - "shortLabel": "FH LeFH-18 105mm", - "type": "Artillery", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 10500, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-artillery", - "indirectFire": true - }, - "Cromwell_IV": { - "name": "Cromwell_IV", - "coalition": "", - "era": "", - "label": "Tk Cromwell IV", - "shortLabel": "Tk Cromwell IV", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "M4A4_Sherman_FF": { - "name": "M4A4_Sherman_FF", - "coalition": "blue", - "era": "WW2", - "label": "Tk M4A4 Sherman Firefly", - "shortLabel": "Tk M4A4 Sherman Firefly", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "soldier_wwii_br_01": { - "name": "soldier_wwii_br_01", - "coalition": "", - "era": "", - "label": "Infantry SMLE No.4 Mk-1", - "shortLabel": "Infantry SMLE No.4 Mk-1", - "type": "Infantry", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 500, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-infantry" - }, - "Centaur_IV": { - "name": "Centaur_IV", - "coalition": "", - "era": "", - "label": "Tk Centaur IV CS", - "shortLabel": "Tk Centaur IV CS", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 6000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "Churchill_VII": { - "name": "Churchill_VII", - "coalition": "blue", - "era": "WW2", - "label": "Churchill VII", - "shortLabel": "Churchill VII", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 3000, - "description": "Tank. Tracked. 95 mm main gun, 7.92 mm coax machine gun.", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "barrelHeight": 2, - "muzzleVelocity": 800, - "aimTime": 5, - "shotsToFire": 100, - "markerFile": "groundunit-tank" - }, - "Daimler_AC": { - "name": "Daimler_AC", - "coalition": "", - "era": "", - "label": "Car Daimler Armored", - "shortLabel": "Car Daimler Armored", - "type": "Armoured Car", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 2000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tetrarch": { - "name": "Tetrarch", - "coalition": "", - "era": "", - "label": "Tk Tetrach", - "shortLabel": "Tk Tetrach", - "type": "Armoured Car", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 2000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false - }, - "QF_37_AA": { - "name": "QF_37_AA", - "coalition": "", - "era": "", - "label": "AAA QF 3.7\"", - "shortLabel": "AAA QF 3.7\"", - "type": "AAA", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 9000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-aaa", - "canAAA": true - }, - "Allies_Director": { - "name": "Allies_Director", - "coalition": "blue", - "era": "WW2", - "label": "Allies Rangefinder", - "shortLabel": "Allies Rangefinder (DRT)", - "type": "Unarmed", - "enabled": false, - "liveries": {}, - "acquisitionRange": 30000, - "engagementRange": 0, - "description": "Rangefinder from WW2 for guns", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "DRT", - "markerFile": "groundunit-truck" - }, - "CCKW_353": { - "name": "CCKW_353", - "coalition": "blue", - "era": "WW2", - "label": "GMC 6x6 'Jimmy'", - "shortLabel": "GMC 6x6", - "type": "Unarmed", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "GMC 6x6 'Jimmy' wheeled truck aka 2 1/2 ton truck.", - "abilities": "Rearm,", - "canTargetPoint": false, - "canRearm": true, - "tags": "Military, Rearm", - "markerFile": "groundunit-truck" - }, - "Willys_MB": { - "name": "Willys_MB", - "coalition": "", - "era": "", - "label": "Car Willys Jeep", - "shortLabel": "Car Willys Jeep", - "type": "Unarmed", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "M12_GMC": { - "name": "M12_GMC", - "coalition": "", - "era": "", - "label": "SPH M12 GMC 155mm", - "shortLabel": "SPH M12 GMC 155mm", - "type": "Artillery", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 18300, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-artillery" - }, - "M30_CC": { - "name": "M30_CC", - "coalition": "", - "era": "", - "label": "Ammo M30 Cargo Carrier", - "shortLabel": "Ammo M30 Cargo Carrier", - "type": "Unarmed", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 1200, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "soldier_wwii_us": { - "name": "soldier_wwii_us", - "coalition": "", - "era": "", - "label": "Infantry M1 Garand", - "shortLabel": "Infantry M1 Garand", - "type": "Infantry", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 500, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-infantry" - }, - "M10_GMC": { - "name": "M10_GMC", - "coalition": "", - "era": "", - "label": "Self Propelled Gun M10 GMC TD", - "shortLabel": "Self Propelled Gun M10 GMC TD", - "type": "Tank", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 6000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-tank" - }, - "M8_Greyhound": { - "name": "M8_Greyhound", - "coalition": "", - "era": "", - "label": "Scout M8 Greyhound AC", - "shortLabel": "Scout M8 Greyhound AC", - "type": "Armoured Car", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 2000, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false - }, - "M2A1-105": { - "name": "M2A1-105", - "coalition": "", - "era": "", - "label": "FH M2A1 105mm", - "shortLabel": "FH M2A1 105mm", - "type": "Artillery", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 11500, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-artillery", - "indirectFire": true - }, - "M4_Tractor": { - "name": "M4_Tractor", - "coalition": "", - "era": "", - "label": "Tractor M4 High Speed", - "shortLabel": "Tractor M4 High Speed", - "type": "Unarmed", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 1200, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "markerFile": "groundunit-truck" - }, - "M45_Quadmount": { - "name": "M45_Quadmount", - "coalition": "", - "era": "", - "label": "AAA M45 Quadmount HB 12.7mm", - "shortLabel": "AAA M45 Quadmount HB 12.7mm", - "type": "AAA", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 1500, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-aaa", - "canAAA": true - }, - "M1_37mm": { - "name": "M1_37mm", - "coalition": "", - "era": "", - "label": "AAA M1 37mm", - "shortLabel": "AAA M1 37mm", - "type": "AAA", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 5700, - "description": "", - "abilities": "", - "canTargetPoint": true, - "canRearm": false, - "markerFile": "groundunit-aaa", - "canAAA": true - }, - "DR_50Ton_Flat_Wagon": { - "name": "DR_50Ton_Flat_Wagon", - "coalition": "", - "era": "", - "label": "DR 50-ton flat wagon", - "shortLabel": "DR 50-ton flat wagon", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Car" - }, - "DRG_Class_86": { - "name": "DRG_Class_86", - "coalition": "", - "era": "", - "label": "DRG Class 86", - "shortLabel": "DRG Class 86", - "type": "Train", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Loco" - }, - "German_covered_wagon_G10": { - "name": "German_covered_wagon_G10", - "coalition": "", - "era": "", - "label": "Wagon G10", - "shortLabel": "Wagon G10 (Germany)", - "type": "Carriage", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Germany" - }, - "German_tank_wagon": { - "name": "German_tank_wagon", - "coalition": "", - "era": "", - "label": "Tank Car", - "shortLabel": "Tank Car (Germany)", - "type": "Carriage", - "enabled": false, - "liveries": {}, - "acquisitionRange": 0, - "engagementRange": 0, - "description": "", - "abilities": "", - "canTargetPoint": false, - "canRearm": false, - "tags": "Germany" - }, - "SA-18 Igla comm": { - "name": "SA-18 Igla comm", - "coalition": "", - "era": "", - "label": "MANPADS SA-18 Igla \"Grouse\" C2", - "shortLabel": "MANPADS SA-18 Igla \"Grouse\" C2", - "type": "AirDefence", - "enabled": false, - "liveries": {} - }, - "flak30": { - "name": "flak30", - "coalition": "", - "era": "", - "label": "AAA Flak 38 20mm", - "shortLabel": "AAA Flak 38 20mm", - "type": "AAA", - "enabled": false, - "liveries": {} - }, - "flak36": { - "name": "flak36", - "coalition": "", - "era": "", - "label": "AAA 8,8cm Flak 36", - "shortLabel": "AAA 8,8cm Flak 36", - "type": "AAA", - "enabled": false, - "liveries": {} - }, - "flak37": { - "name": "flak37", - "coalition": "", - "era": "", - "label": "AAA 8,8cm Flak 37", - "shortLabel": "AAA 8,8cm Flak 37", - "type": "AAA", - "enabled": false, - "liveries": {} - }, - "flak38": { - "name": "flak38", - "coalition": "", - "era": "", - "label": "AAA Flak-Vierling 38 Quad 20mm", - "shortLabel": "AAA Flak-Vierling 38 Quad 20mm", - "type": "AAA", - "enabled": false, - "liveries": {} - }, - "flak41": { - "name": "flak41", - "coalition": "", - "era": "", - "label": "AAA 8,8cm Flak 41", - "shortLabel": "AAA 8,8cm Flak 41", - "type": "AAA", - "enabled": false, - "liveries": {} - } -} \ No newline at end of file diff --git a/client/public/stylesheets/leaflet/leaflet.css b/client/public/stylesheets/leaflet/leaflet.css deleted file mode 100644 index 9ade8dc4..00000000 --- a/client/public/stylesheets/leaflet/leaflet.css +++ /dev/null @@ -1,661 +0,0 @@ -/* required styles */ - -.leaflet-pane, -.leaflet-tile, -.leaflet-marker-icon, -.leaflet-marker-shadow, -.leaflet-tile-container, -.leaflet-pane > svg, -.leaflet-pane > canvas, -.leaflet-zoom-box, -.leaflet-image-layer, -.leaflet-layer { - position: absolute; - left: 0; - top: 0; - } -.leaflet-container { - overflow: hidden; - } -.leaflet-tile, -.leaflet-marker-icon, -.leaflet-marker-shadow { - -webkit-user-select: none; - -moz-user-select: none; - user-select: none; - -webkit-user-drag: none; - } -/* Prevents IE11 from highlighting tiles in blue */ -.leaflet-tile::selection { - background: transparent; -} -/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ -.leaflet-safari .leaflet-tile { - image-rendering: -webkit-optimize-contrast; - } -/* hack that prevents hw layers "stretching" when loading new tiles */ -.leaflet-safari .leaflet-tile-container { - width: 1600px; - height: 1600px; - -webkit-transform-origin: 0 0; - } -.leaflet-marker-icon, -.leaflet-marker-shadow { - display: block; - } -/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ -/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ -.leaflet-container .leaflet-overlay-pane svg { - max-width: none !important; - max-height: none !important; - } -.leaflet-container .leaflet-marker-pane img, -.leaflet-container .leaflet-shadow-pane img, -.leaflet-container .leaflet-tile-pane img, -.leaflet-container img.leaflet-image-layer, -.leaflet-container .leaflet-tile { - max-width: none !important; - max-height: none !important; - width: auto; - padding: 0; - } - -.leaflet-container img.leaflet-tile { - /* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */ - mix-blend-mode: plus-lighter; -} - -.leaflet-container.leaflet-touch-zoom { - -ms-touch-action: pan-x pan-y; - touch-action: pan-x pan-y; - } -.leaflet-container.leaflet-touch-drag { - -ms-touch-action: pinch-zoom; - /* Fallback for FF which doesn't support pinch-zoom */ - touch-action: none; - touch-action: pinch-zoom; -} -.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { - -ms-touch-action: none; - touch-action: none; -} -.leaflet-container { - -webkit-tap-highlight-color: transparent; -} -.leaflet-container a { - -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); -} -.leaflet-tile { - filter: inherit; - visibility: hidden; - } -.leaflet-tile-loaded { - visibility: inherit; - } -.leaflet-zoom-box { - width: 0; - height: 0; - -moz-box-sizing: border-box; - box-sizing: border-box; - z-index: 800; - } -/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ -.leaflet-overlay-pane svg { - -moz-user-select: none; - } - -.leaflet-pane { z-index: 400; } - -.leaflet-tile-pane { z-index: 200; } -.leaflet-overlay-pane { z-index: 400; } -.leaflet-shadow-pane { z-index: 500; } -.leaflet-marker-pane { z-index: 600; } -.leaflet-tooltip-pane { z-index: 650; } -.leaflet-popup-pane { z-index: 700; } - -.leaflet-map-pane canvas { z-index: 100; } -.leaflet-map-pane svg { z-index: 200; } - -.leaflet-vml-shape { - width: 1px; - height: 1px; - } -.lvml { - behavior: url(#default#VML); - display: inline-block; - position: absolute; - } - - -/* control positioning */ - -.leaflet-control { - position: relative; - z-index: 800; - pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ - pointer-events: auto; - } -.leaflet-top, -.leaflet-bottom { - position: absolute; - z-index: 1000; - pointer-events: none; - } -.leaflet-top { - top: 0; - } -.leaflet-right { - right: 0; - } -.leaflet-bottom { - bottom: 0; - } -.leaflet-left { - left: 0; - } -.leaflet-control { - float: left; - clear: both; - } -.leaflet-right .leaflet-control { - float: right; - } -.leaflet-top .leaflet-control { - margin-top: 10px; - } -.leaflet-bottom .leaflet-control { - margin-bottom: 10px; - } -.leaflet-left .leaflet-control { - margin-left: 10px; - } -.leaflet-right .leaflet-control { - margin-right: 10px; - } - - -/* zoom and fade animations */ - -.leaflet-fade-anim .leaflet-popup { - opacity: 0; - -webkit-transition: opacity 0.2s linear; - -moz-transition: opacity 0.2s linear; - transition: opacity 0.2s linear; - } -.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { - opacity: 1; - } -.leaflet-zoom-animated { - -webkit-transform-origin: 0 0; - -ms-transform-origin: 0 0; - transform-origin: 0 0; - } -svg.leaflet-zoom-animated { - will-change: transform; -} - -.leaflet-zoom-anim .leaflet-zoom-animated { - -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); - -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); - transition: transform 0.25s cubic-bezier(0,0,0.25,1); - } -.leaflet-zoom-anim .leaflet-tile, -.leaflet-pan-anim .leaflet-tile { - -webkit-transition: none; - -moz-transition: none; - transition: none; - } - -.leaflet-zoom-anim .leaflet-zoom-hide { - visibility: hidden; - } - - -/* cursors */ - -.leaflet-interactive { - cursor: pointer; - } -.leaflet-grab { - cursor: -webkit-grab; - cursor: -moz-grab; - cursor: grab; - } -.leaflet-crosshair, -.leaflet-crosshair .leaflet-interactive { - cursor: crosshair; - } -.leaflet-popup-pane, -.leaflet-control { - cursor: auto; - } -.leaflet-dragging .leaflet-grab, -.leaflet-dragging .leaflet-grab .leaflet-interactive, -.leaflet-dragging .leaflet-marker-draggable { - cursor: move; - cursor: -webkit-grabbing; - cursor: -moz-grabbing; - cursor: grabbing; - } - -/* marker & overlays interactivity */ -.leaflet-marker-icon, -.leaflet-marker-shadow, -.leaflet-image-layer, -.leaflet-pane > svg path, -.leaflet-tile-container { - pointer-events: none; - } - -.leaflet-marker-icon.leaflet-interactive, -.leaflet-image-layer.leaflet-interactive, -.leaflet-pane > svg path.leaflet-interactive, -svg.leaflet-image-layer.leaflet-interactive path { - pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ - pointer-events: auto; - } - -/* visual tweaks */ - -.leaflet-container { - background: #ddd; - outline-offset: 1px; - } -.leaflet-container a { - color: #0078A8; - } -.leaflet-zoom-box { - border: 2px dotted #38f; - background: rgba(255,255,255,0.5); - } - - -/* general typography */ -.leaflet-container { - font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; - font-size: 12px; - font-size: 0.75rem; - line-height: 1.5; - } - - -/* general toolbar styles */ - -.leaflet-bar { - box-shadow: 0 1px 5px rgba(0,0,0,0.65); - border-radius: 4px; - } -.leaflet-bar a { - background-color: #fff; - border-bottom: 1px solid #ccc; - width: 26px; - height: 26px; - line-height: 26px; - display: block; - text-align: center; - text-decoration: none; - color: black; - } -.leaflet-bar a, -.leaflet-control-layers-toggle { - background-position: 50% 50%; - background-repeat: no-repeat; - display: block; - } -.leaflet-bar a:hover, -.leaflet-bar a:focus { - background-color: #f4f4f4; - } -.leaflet-bar a:first-child { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - } -.leaflet-bar a:last-child { - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom: none; - } -.leaflet-bar a.leaflet-disabled { - cursor: default; - background-color: #f4f4f4; - color: #bbb; - } - -.leaflet-touch .leaflet-bar a { - width: 30px; - height: 30px; - line-height: 30px; - } -.leaflet-touch .leaflet-bar a:first-child { - border-top-left-radius: 2px; - border-top-right-radius: 2px; - } -.leaflet-touch .leaflet-bar a:last-child { - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; - } - -/* zoom control */ - -.leaflet-control-zoom-in, -.leaflet-control-zoom-out { - font: bold 18px 'Lucida Console', Monaco, monospace; - text-indent: 1px; - } - -.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { - font-size: 22px; - } - - -/* layers control */ - -.leaflet-control-layers { - box-shadow: 0 1px 5px rgba(0,0,0,0.4); - background: #fff; - border-radius: 5px; - } -.leaflet-control-layers-toggle { - background-image: url(images/layers.png); - width: 36px; - height: 36px; - } -.leaflet-retina .leaflet-control-layers-toggle { - background-image: url(images/layers-2x.png); - background-size: 26px 26px; - } -.leaflet-touch .leaflet-control-layers-toggle { - width: 44px; - height: 44px; - } -.leaflet-control-layers .leaflet-control-layers-list, -.leaflet-control-layers-expanded .leaflet-control-layers-toggle { - display: none; - } -.leaflet-control-layers-expanded .leaflet-control-layers-list { - display: block; - position: relative; - } -.leaflet-control-layers-expanded { - padding: 6px 10px 6px 6px; - color: #333; - background: #fff; - } -.leaflet-control-layers-scrollbar { - overflow-y: scroll; - overflow-x: hidden; - padding-right: 5px; - } -.leaflet-control-layers-selector { - margin-top: 2px; - position: relative; - top: 1px; - } -.leaflet-control-layers label { - display: block; - font-size: 13px; - font-size: 1.08333em; - } -.leaflet-control-layers-separator { - height: 0; - border-top: 1px solid #ddd; - margin: 5px -10px 5px -6px; - } - -/* Default icon URLs */ -.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */ - background-image: url(images/marker-icon.png); - } - - -/* attribution and scale controls */ - -.leaflet-container .leaflet-control-attribution { - background: #fff; - background: rgba(255, 255, 255, 0.8); - margin: 0; - } -.leaflet-control-attribution, -.leaflet-control-scale-line { - padding: 0 5px; - color: #333; - line-height: 1.4; - } -.leaflet-control-attribution a { - text-decoration: none; - } -.leaflet-control-attribution a:hover, -.leaflet-control-attribution a:focus { - text-decoration: underline; - } -.leaflet-attribution-flag { - display: inline !important; - vertical-align: baseline !important; - width: 1em; - height: 0.6669em; - } -.leaflet-left .leaflet-control-scale { - margin-left: 5px; - } -.leaflet-bottom .leaflet-control-scale { - margin-bottom: 5px; - } -.leaflet-control-scale-line { - border: 2px solid #777; - border-top: none; - line-height: 1.1; - padding: 2px 5px 1px; - white-space: nowrap; - -moz-box-sizing: border-box; - box-sizing: border-box; - background: rgba(255, 255, 255, 0.8); - text-shadow: 1px 1px #fff; - } -.leaflet-control-scale-line:not(:first-child) { - border-top: 2px solid #777; - border-bottom: none; - margin-top: -2px; - } -.leaflet-control-scale-line:not(:first-child):not(:last-child) { - border-bottom: 2px solid #777; - } - -.leaflet-touch .leaflet-control-attribution, -.leaflet-touch .leaflet-control-layers, -.leaflet-touch .leaflet-bar { - box-shadow: none; - } -.leaflet-touch .leaflet-control-layers, -.leaflet-touch .leaflet-bar { - border: 2px solid rgba(0,0,0,0.2); - background-clip: padding-box; - } - - -/* popup */ - -.leaflet-popup { - position: absolute; - text-align: center; - margin-bottom: 20px; - } -.leaflet-popup-content-wrapper { - padding: 1px; - text-align: left; - border-radius: 12px; - } -.leaflet-popup-content { - margin: 13px 24px 13px 20px; - line-height: 1.3; - font-size: 13px; - font-size: 1.08333em; - min-height: 1px; - } -.leaflet-popup-content p { - margin: 17px 0; - margin: 1.3em 0; - } -.leaflet-popup-tip-container { - width: 40px; - height: 20px; - position: absolute; - left: 50%; - margin-top: -1px; - margin-left: -20px; - overflow: hidden; - pointer-events: none; - } -.leaflet-popup-tip { - width: 17px; - height: 17px; - padding: 1px; - - margin: -10px auto 0; - pointer-events: auto; - - -webkit-transform: rotate(45deg); - -moz-transform: rotate(45deg); - -ms-transform: rotate(45deg); - transform: rotate(45deg); - } -.leaflet-popup-content-wrapper, -.leaflet-popup-tip { - background: white; - color: #333; - box-shadow: 0 3px 14px rgba(0,0,0,0.4); - } -.leaflet-container a.leaflet-popup-close-button { - position: absolute; - top: 0; - right: 0; - border: none; - text-align: center; - width: 24px; - height: 24px; - font: 16px/24px Tahoma, Verdana, sans-serif; - color: #757575; - text-decoration: none; - background: transparent; - } -.leaflet-container a.leaflet-popup-close-button:hover, -.leaflet-container a.leaflet-popup-close-button:focus { - color: #585858; - } -.leaflet-popup-scrolled { - overflow: auto; - } - -.leaflet-oldie .leaflet-popup-content-wrapper { - -ms-zoom: 1; - } -.leaflet-oldie .leaflet-popup-tip { - width: 24px; - margin: 0 auto; - - -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; - filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); - } - -.leaflet-oldie .leaflet-control-zoom, -.leaflet-oldie .leaflet-control-layers, -.leaflet-oldie .leaflet-popup-content-wrapper, -.leaflet-oldie .leaflet-popup-tip { - border: 1px solid #999; - } - - -/* div icon */ - -.leaflet-div-icon { - background: #fff; - border: 1px solid #666; - } - - -/* Tooltip */ -/* Base styles for the element that has a tooltip */ -.leaflet-tooltip { - position: absolute; - padding: 6px; - background-color: #fff; - border: 1px solid #fff; - border-radius: 3px; - color: #222; - white-space: nowrap; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - pointer-events: none; - box-shadow: 0 1px 3px rgba(0,0,0,0.4); - } -.leaflet-tooltip.leaflet-interactive { - cursor: pointer; - pointer-events: auto; - } -.leaflet-tooltip-top:before, -.leaflet-tooltip-bottom:before, -.leaflet-tooltip-left:before, -.leaflet-tooltip-right:before { - position: absolute; - pointer-events: none; - border: 6px solid transparent; - background: transparent; - content: ""; - } - -/* Directions */ - -.leaflet-tooltip-bottom { - margin-top: 6px; -} -.leaflet-tooltip-top { - margin-top: -6px; -} -.leaflet-tooltip-bottom:before, -.leaflet-tooltip-top:before { - left: 50%; - margin-left: -6px; - } -.leaflet-tooltip-top:before { - bottom: 0; - margin-bottom: -12px; - border-top-color: #fff; - } -.leaflet-tooltip-bottom:before { - top: 0; - margin-top: -12px; - margin-left: -6px; - border-bottom-color: #fff; - } -.leaflet-tooltip-left { - margin-left: -6px; -} -.leaflet-tooltip-right { - margin-left: 6px; -} -.leaflet-tooltip-left:before, -.leaflet-tooltip-right:before { - top: 50%; - margin-top: -6px; - } -.leaflet-tooltip-left:before { - right: 0; - margin-right: -12px; - border-left-color: #fff; - } -.leaflet-tooltip-right:before { - left: 0; - margin-left: -12px; - border-right-color: #fff; - } - -/* Printing */ - -@media print { - /* Prevent printers from removing background-images of controls. */ - .leaflet-control { - -webkit-print-color-adjust: exact; - print-color-adjust: exact; - } - } diff --git a/client/public/themes/olympus/images/buttons/visibility/head-side-virus-solid.svg b/client/public/themes/olympus/images/buttons/visibility/head-side-virus-solid.svg deleted file mode 100644 index b701e751..00000000 --- a/client/public/themes/olympus/images/buttons/visibility/head-side-virus-solid.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/client/resources/theme/images/icons/speed-increase.svg b/client/resources/theme/images/icons/speed-increase.svg deleted file mode 100644 index e69de29b..00000000 diff --git a/client/routes/api/elevation.js b/client/routes/api/elevation.js deleted file mode 100644 index 33c2e926..00000000 --- a/client/routes/api/elevation.js +++ /dev/null @@ -1,28 +0,0 @@ -const express = require('express'); -var fs = require('fs'); -const router = express.Router(); -const TileSet = require('srtm-elevation').TileSet; -const SRTMElevationDownloader = require('srtm-elevation').SRTMElevationDownloader; - -let rawdata = fs.readFileSync('../olympus.json'); -let config = JSON.parse(rawdata); -var tileset = null; - -if (config["client"] === undefined || config["client"]["elevationProvider"] === undefined) - tileset = new TileSet('./hgt'); -else - tileset = new TileSet('./hgt', {downloader: new SRTMElevationDownloader('./hgt', config["client"]["elevationProvider"])}); - -router.get( "/:lat/:lng", ( req, res ) => { - tileset.getElevation([req.params.lat, req.params.lng], function(err, elevation) { - if (err) { - console.log('getElevation failed: ' + err.message); - res.send("n/a"); - } else { - res.send(String(elevation)); - } - }); - -}); - -module.exports = router; \ No newline at end of file diff --git a/client/routes/resources.js b/client/routes/resources.js deleted file mode 100644 index f3fd6198..00000000 --- a/client/routes/resources.js +++ /dev/null @@ -1,18 +0,0 @@ -const express = require('express'); -const router = express.Router(); - -router.get('/theme/*', function (req, res, next) { - var reqTheme = "olympus"; - - /* Yes, this in an easter egg! :D Feel free to ignore it, or activate the parrot theme to check what it does. Why parrots? The story is a bit long, come to the Discord and ask :D */ - if (reqTheme === "parrot" && !req.url.includes(".css")) - res.redirect('/themes/parrot/images/parrot.svg'); - else - res.redirect(req.url.replace("theme", "themes/" + reqTheme)); -}); - -router.put('/theme/:newTheme', function (req, res, next) { - res.end("Ok"); -}); - -module.exports = router; diff --git a/client/server.vbs b/client/server.vbs deleted file mode 100644 index 397a7ac7..00000000 --- a/client/server.vbs +++ /dev/null @@ -1 +0,0 @@ -CreateObject("Wscript.Shell").Run "npm run start -- --config """&WScript.Arguments(0)&"""", 1 \ No newline at end of file diff --git a/client/views/contextmenus/map.ejs b/client/views/contextmenus/map.ejs deleted file mode 100644 index a3b87b49..00000000 --- a/client/views/contextmenus/map.ejs +++ /dev/null @@ -1,58 +0,0 @@ -
-
-
-
- - - - - - -
-
- - - - -
-
- -
-
- -
-
- -
-
- -
- -
- - - - - -
-
- - - - - - -
-
\ No newline at end of file diff --git a/client/views/other/dialogs/importexport.ejs b/client/views/other/dialogs/importexport.ejs deleted file mode 100644 index 3dfecc59..00000000 --- a/client/views/other/dialogs/importexport.ejs +++ /dev/null @@ -1,29 +0,0 @@ -
-
-

<%= title %>

-
- -
-

<%= textContent %>

- - <% if (showFilenameInput) { %> -
- - - -
- <% } %> - - - - - - -
-
- - -
\ No newline at end of file diff --git a/client/public/databases/units/aircraftdatabase.json b/databases/units/aircraftdatabase.json similarity index 81% rename from client/public/databases/units/aircraftdatabase.json rename to databases/units/aircraftdatabase.json index d009e1bc..2f6c46c1 100644 --- a/client/public/databases/units/aircraftdatabase.json +++ b/databases/units/aircraftdatabase.json @@ -1,33339 +1,39343 @@ -{ - "A-10C_2": { - "name": "A-10C_2", - "coalition": "blue", - "era": "Late Cold War", - "label": "A-10C Warthog 2", - "shortLabel": "A10", - "loadouts": [ - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2, AGM-65H*2, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", - "name": "AGM-65D*2, AGM-65H*2, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,GBU-12,GBU-38,MK82*3,MK82AIR*3,MK5*7,TGP,AM-9*2", - "name": "AGM-65D*2,AGM-65H*2,GBU-12,GBU-38,MK82*3,MK82AIR*3,MK5*7,TGP,AM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK151*7", - "name": "AGM-65D*2,AGM-65H*2,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK151*7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", - "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,TGP,ECM", - "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*6,CBU-87*2,Mk151*7,AIM-9*2,TGP,ECM", - "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*6,CBU-87*2,Mk151*7,AIM-9*2,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,AGM-65H*2,TGP, ECM, AIM-9*2", - "name": "AGM-65D*2,AGM-65H*2,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - }, - { - "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*2,Mk-82*6,AIM-9*2,ECM", - "name": "AGM-65D*2,Mk-82*6,AIM-9*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 3 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*3, AGM-65H*3, CBU-97*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*3, AGM-65H*3, CBU-97*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "CBU-105 - 10 x SFW, CBU with WCMD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*4, CBU-105*2,CBU-97*2, TGP, ECM, AIM-9*2", - "name": "AGM-65D*4, CBU-105*2,CBU-97*2, TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-105 - 10 x SFW, CBU with WCMD", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*4, CBU-105*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*4, CBU-105*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*4, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", - "name": "AGM-65D*4, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "AGM-65D*4, CBU-97*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*4, CBU-97*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,GBU-12*2,GBU-38,Mk-82,AIM-9,TGP,ECM", - "name": "AGM-65D*4,GBU-12*2,GBU-38,Mk-82,AIM-9,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK5*7", - "name": "AGM-65D*4,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK5*7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,Mk-82*6,CBU-87*2,TGP,AIM-9*2,Mk151*7", - "name": "AGM-65D*4,Mk-82*6,CBU-87*2,TGP,AIM-9*2,Mk151*7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", - "name": "AGM-65D*4,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65D*6, CBU-97*4,TGP, ECM, AIM-9*2", - "name": "AGM-65D*6, CBU-97*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65D*6,GBU-12*4,AIM-9M*2,ECM,TGP", - "name": "AGM-65D*6,GBU-12*4,AIM-9M*2,ECM,TGP", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 7 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65G,AGM-65D,Mk-82*7,AIM-9*2,ECM", - "name": "AGM-65G,AGM-65D,Mk-82*7,AIM-9*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 1 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65G,AGM-65K,GBU-10*2,AIM-9*2,TGP,ECM", - "name": "AGM-65G,AGM-65K,GBU-10*2,AIM-9*2,TGP,ECM", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 2 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65G*2,GBU-31*2,AIM-9*2,TGP,ECM", - "name": "AGM-65G*2,GBU-31*2,AIM-9*2,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65H*4, CBU-97*4,TGP, ECM, AIM-9*2", - "name": "AGM-65H*4, CBU-97*4,TGP, ECM, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65K*2,GBU-12*8,AIM-9M*2.ECM,TGP", - "name": "AGM-65K*2,GBU-12*8,AIM-9M*2.ECM,TGP", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65K*2,GBU-38*4,AIM-9*2,TGP,ECM", - "name": "AGM-65K*2,GBU-38*4,AIM-9*2,TGP,ECM", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-105 - 10 x SFW, CBU with WCMD", - "quantity": 4 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65L*2,CBU-105*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", - "name": "AGM-65L*2,CBU-105*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", - "name": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 4 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,TGP", - "name": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65L*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,ECM,TGP", - "name": "AGM-65L*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,ECM,TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-33*12, TGP, CAP-9*1", - "name": "BDU-33*12, TGP, CAP-9*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", - "quantity": 2 - }, - { - "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-117 with TGM-65D - Trg Round for Mav D (IIR)", - "quantity": 1 - }, - { - "name": "LAU-117 with TGM-65H - Trg Round for Mav H (CCD)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-33*6, TGM-65H, TGM-65D, TGP, BDU-50LGB*2, CAP-9*1", - "name": "BDU-33*6, TGM-65H, TGM-65D, TGP, BDU-50LGB*2, CAP-9*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-33*6, TGP, CAP-9*1", - "name": "BDU-33*6, TGP, CAP-9*1", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "BDU-50LD - 500lb Inert Practice Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-33*6, TGP, CAP-9*1, BDU-50LD*2", - "name": "BDU-33*6, TGP, CAP-9*1, BDU-50LD*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "BDU-50HD - 500lb Inert Practice Bomb HD", - "quantity": 2 - }, - { - "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk61, Practice", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-50HD*2,BDU-50LGB*2,TGP, CAP-9*1", - "name": "BDU-50HD*2,BDU-50LGB*2,TGP, CAP-9*1", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "BDU-50HD - 500lb Inert Practice Bomb HD", - "quantity": 6 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk1, Practice", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-50HD*6,Mk1*7,TGP, CAP-9*1", - "name": "BDU-50HD*6,Mk1*7,TGP, CAP-9*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "BDU-50HD - 500lb Inert Practice Bomb HD", - "quantity": 2 - }, - { - "name": "BDU-50LD - 500lb Inert Practice Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-117 with CATM-65K - Captive Trg Round for Mav K (CCD)", - "quantity": 1 - }, - { - "name": "LAU-117 with TGM-65G - Trg Round for Mav G (IIR)", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts WTU-1/B, Practice", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - } - ], - "enabled": true, - "code": "BDU-50LD*2, BDU-50HD*2,CATM-65K, TGM-65G, TGP, CAP-9*1", - "name": "BDU-50LD*2, BDU-50HD*2,CATM-65K, TGM-65G, TGP, CAP-9*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "CBU-103 - 202 x CEM, CBU with WCMD", - "quantity": 4 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "CBU-103*4, M151*14, AIM-9*2, ECM", - "name": "CBU-103*4, M151*14, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "CBU-87*2, M151*14, MK-82AIR*6, AIM-9*2,ECM", - "name": "CBU-87*2, M151*14, MK-82AIR*6, AIM-9*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 4 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "CBU-87*4, M151*28, AIM-9*2,ECM", - "name": "CBU-87*4, M151*28, AIM-9*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "CBU-87*4, M151*42, AIM-9*2, ECM", - "name": "CBU-87*4, M151*42, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-10*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-10*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-12*14,TGP, AIM-9*2", - "name": "GBU-12*14,TGP, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-12*2,GBU-38*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-12*2,GBU-38*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-12*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-12*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-12*6,GBU-10*2,TGP, AIM-9*2", - "name": "GBU-12*6,GBU-10*2,TGP, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-31*2,GBU-38*2, AGM-65H*2, AIM-9*2,TGP, ECM", - "name": "GBU-31*2,GBU-38*2, AGM-65H*2, AIM-9*2,TGP, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-31*2,GBU-38*4,AIM-9*2,TGP,ECM, AIM-9*2", - "name": "GBU-31*2,GBU-38*4,AIM-9*2,TGP,ECM, AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-31*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-31*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-38*4,GBU-31*2,TGP, AIM-9*2", - "name": "GBU-38*4,GBU-31*2,TGP, AIM-9*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", - "quantity": 1 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "LAU-117 with AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-38*4,M151 APKWS*7,AGM-65D*1,AGM-65H*1,TGP,AIM-9*2,ECM", - "name": "GBU-38*4,M151 APKWS*7,AGM-65D*1,AGM-65H*1,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-38*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-38*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "GBU-54(V)1/B - LJDAM, 500lb Laser & GPS Guided Bomb LD", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-54*4,M151 APKWS*7,AGM-65D*4,TGP,AIM-9*2,ECM", - "name": "GBU-54*4,M151 APKWS*7,AGM-65D*4,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "GBU-54(V)1/B - LJDAM, 500lb Laser & GPS Guided Bomb LD", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-54*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "name": "GBU-54*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-131 pods - 21 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "LAU-131 98 rkt M156 WP, AIM-9*2,ECM", - "name": "LAU-131 98 rkt M156 WP, AIM-9*2,ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 6 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "LAU-68 42 rkt M156 WP, AIM-9*2, ECM", - "name": "LAU-68 42 rkt M156 WP, AIM-9*2, ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "M151*98, Mk-82*2,AIM-9*2,ECM", - "name": "M151*98, Mk-82*2,AIM-9*2,ECM", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 5 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*20,AIM-9*2,ECM", - "name": "Mk-82*20,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 4 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*4,Mk-8AIR*4,AIM-9*2,ECM", - "name": "Mk-82*4,Mk-8AIR*4,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 7 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*6,AIM-9*2,TGP,ECM", - "name": "Mk-82*6,AIM-9*2,TGP,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*6,Mk-84*2,AIM-9*2,ECM", - "name": "Mk-82*6,Mk-84*2,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 8 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82*8,AIM-9*2,ECM", - "name": "Mk-82*8,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 5 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82AIR*6,Mk-8AIR*4,M151*1,TGP,AIM-9*2,ECM", - "name": "Mk-82AIR*6,Mk-8AIR*4,M151*1,TGP,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 8 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82AIR*8,AIM-9*2,ECM", - "name": "Mk-82AIR*8,AIM-9*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M257, Para Illum", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "MK-84*2,LAU-68*2,AGM-65K*2", - "name": "MK-84*2,LAU-68*2,AGM-65K*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-84*4,AIM-9*2,ECM", - "name": "Mk-84*4,AIM-9*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 6 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-84*6,AIM-9*2,TGP,ECM", - "name": "Mk-84*6,AIM-9*2,TGP,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM- GBU-10*2,GBU-12*4,AIM-9*2,TGP,ECM", - "name": "PGM- GBU-10*2,GBU-12*4,AIM-9*2,TGP,ECM", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM- GBU-10*4, AGM-65K*2,AIM-9*2,TGP,ECM", - "name": "PGM- GBU-10*4, AGM-65K*2,AIM-9*2,TGP,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", - "quantity": 9 - } - ], - "enabled": true, - "code": "SUU-25*9,AIM-9*2,ECM", - "name": "SUU-25*9,AIM-9*2,ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP", - "name": "TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "TGP, CAP-9*1, BDU-50LGB*4", - "name": "TGP, CAP-9*1, BDU-50LGB*4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-117 with CATM-65K - Captive Trg Round for Mav K (CCD)", - "quantity": 1 - }, - { - "name": "LAU-117 with TGM-65G - Trg Round for Mav G (IIR)", - "quantity": 1 - }, - { - "name": "LAU-105 with 1 x Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, CAP-9*1, CATM-65K*1, TGM-65G*1", - "name": "TGP, CAP-9*1, CATM-65K*1, TGM-65G*1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 3 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, CBU-87*3, M151*28, AIM-9*2, ECM", - "name": "TGP, CBU-87*3, M151*28, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, M151*14, Mk-82*2, Mk-82AIR*2, AIM-9*2, ECM", - "name": "TGP, M151*14, Mk-82*2, Mk-82AIR*2, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, M151*42, Mk-82*6, Mk-82AIR*6, AIM-9*2, ECM", - "name": "TGP, M151*42, Mk-82*6, Mk-82AIR*6, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, M151*49, Mk-82*2, CBU-87*2, AIM-9*2, ECM", - "name": "TGP, M151*49, Mk-82*2, CBU-87*2, AIM-9*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "TGP, M151*84, Mk-82*2,AIM-9*2, ECM", - "name": "TGP, M151*84, Mk-82*2,AIM-9*2, ECM", - "roles": [ - "CAS" - ] - } - ], - "filename": "a-10.png", - "enabled": true, - "liveries": { - "81st fs spangdahlem ab, germany (sp) 1": { - "name": "81st FS Spangdahlem AB, Germany (SP) 1", - "countries": [ - "USA" - ] - }, - "fictional spanish tritonal": { - "name": "Fictional Spanish Tritonal", - "countries": [ - "SPN" - ] - }, - "47th fs barksdale afb, louisiana (bd)": { - "name": "47th FS Barksdale AFB, Louisiana (BD)", - "countries": [ - "USA" - ] - }, - "fictional georgian olive": { - "name": "Fictional Georgian Olive", - "countries": [ - "GRG" - ] - }, - "algerian af fictional grey": { - "name": "Algerian AF Fictional Grey", - "countries": [ - "DZA" - ] - }, - "fictional russian air force 1": { - "name": "Fictional Russian Air Force 1", - "countries": [ - "RUS" - ] - }, - "fictional israel 115 sqn flying dragon": { - "name": "Fictional Israel 115 Sqn Flying Dragon", - "countries": [ - "ISR" - ] - }, - "172nd fs battle creek angb, michigan (bc)": { - "name": "172nd FS Battle Creek ANGB, Michigan (BC)", - "countries": [ - "USA" - ] - }, - "190th fs boise angb, idaho (id)": { - "name": "190th FS Boise ANGB, Idaho (ID)", - "countries": [ - "USA" - ] - }, - "81st fs spangdahlem ab, germany (sp) 2": { - "name": "81st FS Spangdahlem AB, Germany (SP) 2", - "countries": [ - "USA" - ] - }, - "fictional german 3322": { - "name": "Fictional German 3322", - "countries": [ - "GER" - ] - }, - "66th ws nellis afb, nevada (wa)": { - "name": "66th WS Nellis AFB, Nevada (WA)", - "countries": [ - "USA" - ] - }, - "algerian af fictional desert": { - "name": "Algerian AF Fictional Desert", - "countries": [ - "DZA" - ] - }, - "fictional italian am (23gruppo)": { - "name": "AM (23Gruppo)", - "countries": [ - "ITA" - ] - }, - "haf fictional": { - "name": "Hellenic Airforce (Fictional)", - "countries": [ - "GRC" - ] - }, - "184th fs arkansas ang, fort smith (fs)": { - "name": "184th FS Arkansas ANG, Fort Smith (FS)", - "countries": [ - "USA" - ] - }, - "354th fs davis monthan afb, arizona (dm)": { - "name": "354th FS Davis Monthan AFB, Arizona (DM)", - "countries": [ - "USA" - ] - }, - "fictional royal norwegian air force": { - "name": "Fictional Royal Norwegian Air Force", - "countries": [ - "NOR" - ] - }, - "422nd tes nellis afb, nevada (ot)": { - "name": "422nd TES Nellis AFB, Nevada (OT)", - "countries": [ - "USA" - ] - }, - "118th fs bradley angb, connecticut (ct)": { - "name": "118th FS Bradley ANGB, Connecticut (CT)", - "countries": [ - "USA" - ] - }, - "fictional spanish aga": { - "name": "Fictional Spanish AGA", - "countries": [ - "SPN" - ] - }, - "74th fs moody afb, georgia (ft)": { - "name": "74th FS Moody AFB, Georgia (FT)", - "countries": [ - "USA" - ] - }, - "fictional russian air force 2": { - "name": "Fictional Russian Air Force 2", - "countries": [ - "RUS" - ] - }, - "118th fs bradley angb, connecticut (ct) n621": { - "name": "118th FS Bradley ANGB, Connecticut (CT) N621", - "countries": [ - "USA" - ] - }, - "357th fs davis monthan afb, arizona (dm)": { - "name": "357th FS Davis Monthan AFB, Arizona (DM)", - "countries": [ - "USA" - ] - }, - "canada rcaf 409 squadron": { - "name": "Fictional RCAF 409 Squadron", - "countries": [ - "CAN" - ] - }, - "355th fs eielson afb, alaska (ak)": { - "name": "355th FS Eielson AFB, Alaska (AK)", - "countries": [ - "USA" - ] - }, - "25th fs osan ab, korea (os)": { - "name": "25th FS Osan AB, Korea (OS)", - "countries": [ - "USA" - ] - }, - "358th fs davis monthan afb, arizona (dm)": { - "name": "358th FS Davis Monthan AFB, Arizona (DM)", - "countries": [ - "USA" - ] - }, - "australia notional raaf": { - "name": "Australia Notional RAAF", - "countries": [ - "AUS" - ] - }, - "fictional canadian air force pixel camo": { - "name": "Fictional Canadian Air Force Pixel Camo", - "countries": [ - "CAN" - ] - }, - "fictional france escadron de chasse 03.003 ardennes": { - "name": "Fictional France Escadron de Chasse 03.003 ARDENNES", - "countries": [ - "FRA" - ] - }, - "canada rcaf 442 snow scheme": { - "name": "Fictional RCAF 442 Snow Scheme", - "countries": [ - "CAN" - ] - }, - "23rd tfw england afb (el)": { - "name": "23rd TFW England AFB (EL)", - "countries": [ - "USA" - ] - }, - "fictional georgian grey": { - "name": "Fictional Georgian Grey", - "countries": [ - "GRG" - ] - }, - "fictional ukraine air force 1": { - "name": "Fictional Ukraine Air Force 1", - "countries": [ - "UKR" - ] - }, - "104th fs maryland ang, baltimore (md)": { - "name": "104th FS Maryland ANG, Baltimore (MD)", - "countries": [ - "USA" - ] - }, - "fictional spanish 12nd wing": { - "name": "Fictional Spanish 12nd Wing", - "countries": [ - "SPN" - ] - }, - "a-10 grey": { - "name": "A-10 Grey", - "countries": [ - "DEN", - "TUR", - "NETH", - "BEL", - "UK" - ] - }, - "fictional german 3323": { - "name": "Fictional German 3323", - "countries": [ - "GER" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, straight wing, 1 crew, attack aircraft. Warthog", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "A-20G": { - "name": "A-20G", - "coalition": "blue", - "label": "A-20G Havoc", - "era": "WW2", - "shortLabel": "A20", - "loadouts": [ - { - "items": [ - { - "name": "4 x AN-M64 - 500lb GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "500 lb GP bomb LD*4", - "name": "500 lb GP bomb LD*4", - "roles": [ - "CAS", - "Strike", - "Runway Attack", - "Antiship Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - } - ], - "filename": "a-20.png", - "enabled": true, - "liveries": { - "ussr 1st gmtap": { - "name": "1st GMTAP", - "countries": [ - "SUN", - "RUS" - ] - }, - "usaf 645th bs": { - "name": "645th BS, 410th BG, 9th AF", - "countries": [ - "USA" - ] - }, - "107 sqn": { - "name": "107 SQN", - "countries": [ - "UK" - ] - }, - "ussr 27 ape dd": { - "name": "27th API DD", - "countries": [ - "SUN", - "RUS" - ] - }, - "usaf 668th bs": { - "name": "668th BS, 416th BG", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 propeller, straight wing, 3 crew, medium attack bomber. Havoc", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "A-50": { - "name": "A-50", - "coalition": "red", - "label": "A-50 Mainstay", - "era": "Late Cold War", - "shortLabel": "A50", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "AWACS" - ] - } - ], - "filename": "a-50.png", - "enabled": true, - "liveries": { - "rf air force": { - "name": "RF Air Force", - "countries": [ - "RUS" - ] - }, - "rf air force new": { - "name": "RF Air Force new", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 15 crew. NATO reporting name: Mainstay", - "abilities": "AEW", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "AJS37": { - "name": "AJS37", - "coalition": "blue", - "label": "AJS37 Viggen", - "era": "Mid Cold War", - "shortLabel": "AJS", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", - "quantity": 4 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Battlefield Air Interdiction: RB-75*4, RB-24J*2, XT", - "name": "Battlefield Air Interdiction: RB-75*4, RB-24J*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-04E Anti-ship Missile", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Anti-ship: RB-04E*2, RB-74*2, XT", - "name": "Anti-ship: RB-04E*2, RB-74*2, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Anti-ship (Heavy Mav): RB-75T*4, XT", - "name": "Anti-ship (Heavy Mav): RB-75T*4, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "U/22 Jammer pod", - "quantity": 1 - }, - { - "name": "KB Flare/Chaff dispenser pod", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Hard Target (Countermeasures): RB-05, XT, KB, U22", - "name": "Hard Target (Countermeasures): RB-05, XT, KB, U22", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Hard Target (MAV): RB-75T*2, RB-74*2, XT", - "name": "Hard Target (MAV): RB-75T*2, RB-74*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Ferry Flight: XT", - "name": "Ferry Flight: XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", - "quantity": 2 - }, - { - "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS (75 GUN): RB-75*2, AKAN", - "name": "CAS (75 GUN): RB-75*2, AKAN", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAP: RB-74*4, XT", - "name": "CAP: RB-74*4, XT", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "U22/A Jammer", - "quantity": 1 - }, - { - "name": "KB Flare/Chaff dispenser pod", - "quantity": 1 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Countermeasures Escort: U/22A, KB", - "name": "Countermeasures Escort: U/22A, KB", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BK-90 MJ1 (72 x MJ1 HE-FRAG Bomblets)", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Strike: BK90 (MJ1)*2, RB-74*2, XT", - "name": "Strike: BK90 (MJ1)*2, RB-74*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS: AKAN, RB-05A", - "name": "CAS: AKAN, RB-05A", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAP (6 AAM): RB-74*4, RB-24J*2, XT", - "name": "CAP (6 AAM): RB-74*4, RB-24J*2, XT", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Rocket Half Load HE: ARAK HE*2, RB-74*2, XT", - "name": "Rocket Half Load HE: ARAK HE*2, RB-74*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAP / Intecept: RB-05A*2, RB-74*2, XT", - "name": "CAP / Intecept: RB-05A*2, RB-74*2, XT", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "4x SB M/71 120kg GP Bomb Low-drag", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bombs Low-drag: SB71LD*16, RB-24J*2, XT", - "name": "Bombs Low-drag: SB71LD*16, RB-24J*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", - "quantity": 2 - }, - { - "name": "KB Flare/Chaff dispenser pod", - "quantity": 1 - }, - { - "name": "U/22 Jammer pod", - "quantity": 1 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "SEAD: RB-75T*2, U22/A, KB, XT", - "name": "SEAD: RB-75T*2, U22/A, KB, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-15F Programmable Anti-ship Missile", - "quantity": 2 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Anti-Ship (Modern): RB-15F*2, RB-74*2, XT", - "name": "Anti-Ship (Modern): RB-15F*2, RB-74*2, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "New Payload", - "name": "New Payload", - "roles": [] - }, - { - "items": [ - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAP (AJ37): RB-24J*2", - "name": "CAP (AJ37): RB-24J*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "KB Flare/Chaff dispenser pod", - "quantity": 1 - }, - { - "name": "Rb-04E Anti-ship Missile", - "quantity": 1 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "ECM Escort Anti-ship: RB-04E, KB, RB-74*2, XT", - "name": "ECM Escort Anti-ship: RB-04E, KB, RB-74*2, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "4x SB M/71 120kg GP Bomb High-drag", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bombs High-drag: SB71HD*16, XT, RB-24J", - "name": "Bombs High-drag: SB71HD*16, XT, RB-24J", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Anti-ship (Light Mav): RB-75*4, XT", - "name": "Anti-ship (Light Mav): RB-75*4, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Rocket Full Load HE: ARAK HE*4, RB-24J, XT", - "name": "Rocket Full Load HE: ARAK HE*4, RB-24J, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "2x 80kg LYSB-71 Illumination Bomb", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "Illumination: LYSB*8, XT", - "name": "Illumination: LYSB*8, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Anti-ship (RB05): RB-05A*2, RB-74*2, XT", - "name": "Anti-ship (RB05): RB-05A*2, RB-74*2, XT", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAP (Gun): AKAN*2, RB-74*2, XT", - "name": "CAP (Gun): AKAN*2, RB-74*2, XT", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Hard Target: RB-05A*2, RB-74*2, XT", - "name": "Hard Target: RB-05A*2, RB-74*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "Rb-05A MCLOS ASM/AShM/AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "RB-05*2, XT", - "name": "RB-05*2, XT", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", - "quantity": 4 - }, - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAS: ARAK M70 HE*4, XT", - "name": "CAS: ARAK M70 HE*4, XT", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AJS External-tank 1013kg fuel", - "quantity": 1 - }, - { - "name": "4x SB M/71 120kg GP Bomb High-drag", - "quantity": 4 - }, - { - "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Runway Strike: SB71HD*16, RB-24J, XT", - "name": "Runway Strike: SB71HD*16, RB-24J, XT", - "roles": [ - "Runway Attack" - ] - } - ], - "filename": "viggen.png", - "enabled": true, - "liveries": { - "37": { - "name": "#1 Splinter F21 Norrbottens Flygflottilj", - "countries": "All" - }, - "37402": { - "name": "#3 JA-37 F21 Akktu Stakki", - "countries": "All" - }, - "se-dxnv4": { - "name": "SE-DXN by Mach3DS", - "countries": "All" - }, - "f7 skaraborg": { - "name": "#4 Splinter F7 Skaraborgs Flygflottilj 76", - "countries": "All" - }, - "sf-37 akktu stakki - f21": { - "name": "SF-37 Akktu Stakki - F21", - "countries": "All" - }, - "the show must go on": { - "name": "SHOW MUST GO ON! by Bender & Mach3DS", - "countries": "All" - }, - "baremetal": { - "name": "#2 Bare Metal F7 Skaraborgs Flygflottilj", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "Single jet engine, delta wing, 1 crew, attack aircraft. Viggen", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "AV8BNA": { - "name": "AV8BNA", - "coalition": "blue", - "label": "AV8BNA Harrier", - "era": "Late Cold War", - "shortLabel": "AV8", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 6 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "H-L-H: Mk-82SEx6, GAU-12", - "name": "H-L-H: Mk-82SEx6, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 (7 WP Tkts)x2, TPOD", - "name": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 (7 WP Tkts)x2, TPOD", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AS: AGM-122, AIM-9M, GBU-12, GBU-16x2, TPOD, Jammer Pod, GAU-12", - "name": "AS: AGM-122, AIM-9M, GBU-12, GBU-16x2, TPOD, Jammer Pod, GAU-12", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "2 GBU-38 */*", - "quantity": 1 - }, - { - "name": "AERO 1D 300 Gallons Fuel Tank ", - "quantity": 2 - }, - { - "name": "2 GBU-38 *\\*", - "quantity": 1 - }, - { - "name": "AGM-122 Sidearm", - "quantity": 1 - } - ], - "enabled": true, - "code": "H-M-H: AIM-9M, AGM-122, GBU-38x4, Fuel Tankx2", - "name": "H-M-H: AIM-9M, AGM-122, GBU-38x4, Fuel Tankx2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "2 Mk-83 *\\*", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "2 Mk-83 */*", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx6, Jammer Pod, GAU-12", - "name": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx6, Jammer Pod, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AERO 1D 300 Gallons Fuel Tank ", - "quantity": 2 - }, - { - "name": "2 Mk-83 *\\*", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "2 Mk-83 */*", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx4, Jammer Pod, GAU-12, Fuel Tankx2", - "name": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx4, Jammer Pod, GAU-12, Fuel Tankx2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AFAC: AIM-9m, AGM-122, SUU-25x2, LAU-68 (7 WP Tkts)x2, Jammer Pod", - "name": "AFAC: AIM-9m, AGM-122, SUU-25x2, LAU-68 (7 WP Tkts)x2, Jammer Pod", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "2 Mk-82 Snakeye */*", - "quantity": 2 - }, - { - "name": "2 Mk-82 Snakeye *\\*", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Interdiction (H-L-L-H): AIM-9Mx2, Mk-82SEx8, Jammer Pod, GAU-12", - "name": "Interdiction (H-L-L-H): AIM-9Mx2, Mk-82SEx8, Jammer Pod, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "H-M-H: Mk-82LDx6, GAU-12", - "name": "H-M-H: Mk-82LDx6, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "2 GBU-12 *-*", - "quantity": 2 - }, - { - "name": "AERO 1D 300 Gallons Fuel Tank ", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM (H-H-H-H): GBU-12x4, TPOD, Fuel Tankx2", - "name": "PGM (H-H-H-H): GBU-12x4, TPOD, Fuel Tankx2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "2 Mk-82 Snakeye *\\*", - "quantity": 2 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "2 Mk-82 Snakeye */*", - "quantity": 2 - } - ], - "enabled": true, - "code": "L-L-L: Mk-82SEx10, Jammer Pod, GAU-12", - "name": "L-L-L: Mk-82SEx10, Jammer Pod, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", - "quantity": 2 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 LAU-68 (7 WP Tkts)x2, GAU-12", - "name": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 LAU-68 (7 WP Tkts)x2, GAU-12", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "3 Mk-82", - "quantity": 2 - }, - { - "name": "2 Mk-82 *\\*", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "2 Mk-82 */*", - "quantity": 1 - } - ], - "enabled": true, - "code": "H-M-H: Mk-82LDx10, GAU-12", - "name": "H-M-H: Mk-82LDx10, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets", - "quantity": 2 - }, - { - "name": "2 Mk-20 Rockeye *\\*", - "quantity": 2 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "2 Mk-20 Rockeye */*", - "quantity": 2 - } - ], - "enabled": true, - "code": "Area Suppression: Mk-20x10, GAU-12", - "name": "Area Suppression: Mk-20x10, GAU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 2 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Rockets: LAU-10 (4 HE Rkts)x2, LAU-68 (7 HE Rkts)x2", - "name": "Rockets: LAU-10 (4 HE Rkts)x2, LAU-68 (7 HE Rkts)x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AS: AIM-9M, AGM-122, AGM-65Fx2, GBU-12, TPOD, Jammer Pod, GAU-12", - "name": "AS: AIM-9M, AGM-122, AGM-65Fx2, GBU-12, TPOD, Jammer Pod, GAU-12", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-7 with AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12", - "name": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "2 GBU-12 *-*", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM (H-H-H-H): GBU-12x5, TPOD, Jammer POd, GAU-12", - "name": "PGM (H-H-H-H): GBU-12x5, TPOD, Jammer POd, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-7 with AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AERO 1D 300 Gallons Fuel Tank ", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12, Fuel Tankx2", - "name": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12, Fuel Tankx2", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM (H-H-H-H): AIM-9Mx2, GBU-16x4, TPOD, GAU-12", - "name": "PGM (H-H-H-H): AIM-9Mx2, GBU-16x4, TPOD, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 4 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Anti Armor: AIM-9Mx2, AGM-65Fx4, GAU-12", - "name": "Anti Armor: AIM-9Mx2, AGM-65Fx4, GAU-12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "2 Mk-83 *\\*", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "2 Mk-83 */*", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "RA (H-M-M-H): AIM-9M, AGM-122, Mk-83LDx6, Jammer Pod, GAU-12", - "name": "RA (H-M-M-H): AIM-9M, AGM-122, Mk-83LDx6, Jammer Pod, GAU-12", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 4 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Stand Off: AIM-9M, AGM-122, AGM-65Fx4, Jammer Pod, GAU-12", - "name": "Stand Off: AIM-9M, AGM-122, AGM-65Fx4, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 3 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Stand Off: AIM-9M, AGM-122x3, AGM-65Fx2, Jammer Pod, GAU-12", - "name": "Stand Off: AIM-9M, AGM-122x3, AGM-65Fx2, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-122 Sidearm", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - } - ], - "enabled": true, - "code": "Stand Off: AIM-9Mx2, AGM-122x2, AGM-65Fx2, Jammer Pod, GAU-12", - "name": "Stand Off: AIM-9Mx2, AGM-122x2, AGM-65Fx2, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 3 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Iron Hand: AIM-9Mx1, AGM-122x3, LAU-68 (7 HE Rkts)x2, Jammer Pod, GAU-12", - "name": "Iron Hand: AIM-9Mx1, AGM-122x3, LAU-68 (7 HE Rkts)x2, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 3 - }, - { - "name": "2 Mk-20 Rockeye *\\*", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "2 Mk-20 Rockeye */*", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "Iron Hand: AIM-9M, AGM-122x3, Mk-20x4, Jammer Pod, GAU-12", - "name": "Iron Hand: AIM-9M, AGM-122x3, Mk-20x4, Jammer Pod, GAU-12", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 2 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - }, - { - "name": "AN/ALQ-164 DECM Pod", - "quantity": 1 - }, - { - "name": "GAU 12 Gunpod w/SAPHEI-T", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AS: AIM-9M, AGM-122, AGM-65E2x2, GBU-12, TPOD, Jammer Pod, GAU-12", - "name": "AS: AIM-9M, AGM-122, AGM-65E2x2, GBU-12, TPOD, Jammer Pod, GAU-12", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM: AIM-9M, AGM-122, AGM-65E2x4, TPOD", - "name": "PGM: AIM-9M, AGM-122, AGM-65E2x4, TPOD", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "AGM-122 Sidearm", - "quantity": 1 - }, - { - "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", - "quantity": 4 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "PGM: AIM-9M, AGM-122, APKWSIIx4, TPOD", - "name": "PGM: AIM-9M, AGM-122, APKWSIIx4, TPOD", - "roles": [ - "Strike" - ] - } - ], - "filename": "av8bna.png", - "enabled": true, - "liveries": { - "vmat-203": { - "name": "VMAT-203", - "countries": "All" - }, - "vma-542": { - "name": "VMA-542", - "countries": "All" - }, - "vma-311d": { - "name": "VMA-311D", - "countries": "All" - }, - "vma-223d": { - "name": "VMA-223D", - "countries": "All" - }, - "vma-513": { - "name": "VMA-513", - "countries": "All" - }, - "vma-214d": { - "name": "VMA-214D", - "countries": "All" - }, - "vma-211": { - "name": "VMA-211", - "countries": "All" - }, - "vma-231-2": { - "name": "VMA-231-2", - "countries": "All" - }, - "vmat-203s": { - "name": "VMAT-203 Special", - "countries": "All" - }, - "vma-214": { - "name": "VMA-214", - "countries": "All" - }, - "vma-513d": { - "name": "VMA-513D", - "countries": "All" - }, - "vma-231d": { - "name": "VMA-231D", - "countries": "All" - }, - "vma-311": { - "name": "VMA-311", - "countries": "All" - }, - "default": { - "name": "default", - "countries": "All" - }, - "vma-231-1": { - "name": "VMA-231-1", - "countries": "All" - }, - "vma-211d": { - "name": "VMA-211D", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew, all weather, VTOL attack aircraft. Harrier", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "An-26B": { - "name": "An-26B", - "coalition": "red", - "label": "An-26B Curl", - "era": "Mid Cold War", - "shortLabel": "A26", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "an-26.png", - "enabled": true, - "liveries": { - "china plaaf": { - "name": "China PLAAF", - "countries": [ - "CHN" - ] - }, - "rf navy": { - "name": "RF Navy", - "countries": [ - "RUS" - ] - }, - "abkhazian af": { - "name": "Abkhazian AF", - "countries": [ - "ABH" - ] - }, - "aeroflot": { - "name": "Aeroflot", - "countries": [ - "SUN", - "RUS" - ] - }, - "georgian af": { - "name": "Georgian AF", - "countries": [ - "GRG" - ] - }, - "rf air force": { - "name": "RF Air Force", - "countries": [ - "RUS" - ] - }, - "ukraine af": { - "name": "Ukraine AF", - "countries": [ - "UKR" - ] - } - }, - "type": "Aircraft", - "description": "2 turboprop, straight wing, 5 crew, cargo and passenger aircraft. NATO reporting name: Curl", - "abilities": "Transport", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "An-30M": { - "name": "An-30M", - "coalition": "red", - "label": "An-30M Clank", - "era": "Mid Cold War", - "shortLabel": "A30", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "a-50.png", - "enabled": true, - "liveries": { - "15th transport ab": { - "name": "15th Transport AB", - "countries": [ - "UKR" - ] - }, - "china caac": { - "name": "China CAAC", - "countries": [ - "CHN" - ] - }, - "rf air force": { - "name": "RF Air Force", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 turboprop, straight wing, 7 crew, weather reseach aircraft. NATO reporting name: Clank", - "abilities": "Transport", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "B-1B": { - "name": "B-1B", - "coalition": "blue", - "label": "B-1B Lancer", - "era": "Late Cold War", - "shortLabel": "B1", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "28 x Mk-82 - 500lb GP Bombs LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "Mk-82*84", - "name": "Mk-82*84", - "roles": [ - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "4 x AGM-154C - JSOW Unitary BROACH", - "quantity": 3 - } - ], - "enabled": true, - "code": "AGM-154*12", - "name": "AGM-154*12", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "GBU-38*48", - "name": "GBU-38*48", - "roles": [ - "CAS", - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "10 x CBU-87 - 202 x CEM Cluster Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "CBU-87*30", - "name": "CBU-87*30", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "10 x CBU-97 - 10 x SFW Cluster Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "CBU-97*30", - "name": "CBU-97*30", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "10 x CBU-97 - 10 x SFW Cluster Bombs", - "quantity": 2 - }, - { - "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-38*16, CBU-97*20", - "name": "GBU-38*16, CBU-97*20", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "8 x Mk-84 - 2000lb GP Bombs LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "Mk-84*24", - "name": "Mk-84*24", - "roles": [ - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "8 x GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "GBU-31*24", - "name": "GBU-31*24", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "8 x GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bombs", - "quantity": 3 - } - ], - "enabled": true, - "code": "GBU-31(V)3/B*24", - "name": "GBU-31(V)3/B*24", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", - "quantity": 2 - }, - { - "name": "8 x GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bombs", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-31*8, GBU-38*32", - "name": "GBU-31*8, GBU-38*32", - "roles": [ - "Strike", - "Strike" - ] - } - ], - "filename": "b-1.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swing wing, 2 crew bomber. Lancer", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "B-52H": { - "name": "B-52H", - "coalition": "blue", - "label": "B-52H Stratofortress", - "era": "Early Cold War", - "shortLabel": "B52", - "loadouts": [ - { - "items": [ - { - "name": "8 x AGM-84A Harpoon ASM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-84A*8", - "name": "AGM-84A*8", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "6 x AGM-86D on MER", - "quantity": 2 - }, - { - "name": "8 x AGM-86D", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-86C*20", - "name": "AGM-86C*20", - "roles": [ - "Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "MER12 with 12 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "27 x Mk-82 - 500lb GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk 82*51", - "name": "Mk 82*51", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "18 x Mk-84 2000lb GP Bombs", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-84*18", - "name": "Mk-84*18", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "HSAB with 9 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk20*18", - "name": "Mk20*18", - "roles": [ - "Strike", - "Runway Attack" - ] - } - ], - "filename": "b-52.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "8 jet engine, swept wing, 6 crew bomber. Stratofortress", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Bf-109K-4": { - "name": "Bf-109K-4", - "coalition": "red", - "label": "Bf-109K-4", - "era": "WW2", - "shortLabel": "109", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "300 liter Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank", - "name": "Fuel Tank", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "SC 250 Type 3 J - 250kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC250", - "name": "SC250", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 500 J - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC500", - "name": "SC500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - } - ], - "filename": "bf109.png", - "enabled": true, - "liveries": { - "germany_standard": { - "name": "Jagdgeschwader 27", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 white 6, jg 4": { - "name": "White 6, JG 4", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 red7 eads": { - "name": "BF109G4 -red7- EADS -fondation messerschmitt V2", - "countries": [ - "GER" - ] - }, - "bf-109 k4 iijg52": { - "name": "II./JG52", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 us captured": { - "name": "US Captured", - "countries": [ - "USA" - ] - }, - "bf-109 k4 stab jg52": { - "name": "Stab JG52", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 334xxx batch": { - "name": "334xxx batch", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 ussr green": { - "name": "Green-trophy RKKA", - "countries": [ - "SUN", - "RUS" - ] - }, - "bf-109 k4 330xxx batch": { - "name": "330xxx batch", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 irmgard": { - "name": "Bf-109K-4 Irmgard Captured", - "countries": [ - "USA" - ] - }, - "bf-109 k4 swiss e-3a j-374 1940": { - "name": "Swiss E-3a J-374 1940 l'Seducteur", - "countries": [ - "SUI" - ] - }, - "green": { - "name": "Green", - "countries": "All" - }, - "bf-109 k4 9.jg77": { - "name": "9./JG77", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 croatia": { - "name": "Croatia Air Force - 'Black 4'", - "countries": [ - "HRV", - "NZG", - "GER" - ] - }, - "bf-109 k4 9.jg27 (w10+i)": { - "name": "9./JG27 (W10+I)", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 legion condor spain 1939": { - "name": "6-123 ESPAÑA", - "countries": [ - "SPN" - ] - }, - "bf-109 k4 jagdgeschwader 53": { - "name": " Jagdgeschwader 53", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 1.njg 11": { - "name": "NJG 11", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 g10 of tibor tobak rhaf": { - "name": "BF109G10 RHAF Tibor Tobak by Reflected", - "countries": [ - "GER", - "HUN", - "NZG" - ] - }, - "bf-109 k4 jagdgeschwader 77": { - "name": "Jagdgeschwader 77", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 iaf s-199": { - "name": "S-199 IDF by Ovenmit", - "countries": [ - "ISR" - ] - }, - "bf-109 k4 iiijg27": { - "name": "III/JG27", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 1.njg 11 (white 5)": { - "name": "1./NJG 11 (W5)", - "countries": [ - "GER", - "NZG" - ] - }, - "bf-109 k4 raf vd 358 e-2": { - "name": "RAF VD 358 E-2 - UK Captured", - "countries": [ - "UK" - ] - }, - "bf-109 k4 335xxx batch": { - "name": "335xxx batch", - "countries": [ - "GER", - "NZG" - ] - } - }, - "type": "Aircraft", - "description": "Single propeller, straight wing, 1 crew. 109", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "C-101CC": { - "name": "C-101CC", - "coalition": "blue", - "label": "C-101CC", - "era": "Late Cold War", - "shortLabel": "101", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, DEFA 553 CANNON (I)", - "name": "2*AIM-9P, DEFA 553 CANNON (I)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, DEFA 553 CANNON (I)", - "name": "2*AIM-9M, DEFA 553 CANNON (I)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, DEFA 533 CANNON (II)", - "name": "2*AIM-9P, DEFA 533 CANNON (II)", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, AN-M3 CANNON (IV)", - "name": "2*AIM-9P, AN-M3 CANNON (IV)", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON", - "name": "2*R.550 MAGIC, DEFA 553 CANNON", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, AN-M3 CANNON (III)", - "name": "2*AIM-9M, AN-M3 CANNON (III)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, DEFA 553 CANNON", - "name": "2*AIM-9P, DEFA 553 CANNON", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON (III)", - "name": "2*R.550 MAGIC, DEFA 553 CANNON (III)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", - "name": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", - "name": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M 2*SEA EAGLE, AN-M3 CANNON", - "name": "2*AIM-9M 2*SEA EAGLE, AN-M3 CANNON", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, AN-M3 CANNON", - "name": "2*AIM-9M, AN-M3 CANNON", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", - "name": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2* SEA EAGLE, DEFA-553 CANNON", - "name": "2* SEA EAGLE, DEFA-553 CANNON", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "BR-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9P, 2*BR-250,2*MK-82, DEFA 553 CANNON", - "name": "2*AIM-9P, 2*BR-250,2*MK-82, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", - "name": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", - "name": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "BR-500 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*BELOUGA, 2*BR-500, DEFA 553 CANNON", - "name": "2*BELOUGA, 2*BR-500, DEFA 553 CANNON", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, DEFA 553 CANNON (IV)", - "name": "2*AIM-9M, DEFA 553 CANNON (IV)", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, AN-M3 CANNON (II)", - "name": "2*R.550 MAGIC, AN-M3 CANNON (II)", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic, DEFA 553 CANNON (I)", - "name": "2*R550 Magic, DEFA 553 CANNON (I)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - }, - { - "name": "BIN-200 - 200kg Napalm Incendiary Bomb", - "quantity": 2 - }, - { - "name": "Belouga", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", - "name": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", - "name": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9P, AN-M3 CANNON (III)", - "name": "2*AIM-9P, AN-M3 CANNON (III)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9M, DEFA 533 CANNON (II)", - "name": "2*AIM-9M, DEFA 533 CANNON (II)", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "DEFA-553 - 30mm Revolver Cannon", - "quantity": 1 - }, - { - "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", - "quantity": 2 - }, - { - "name": "BR-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "R550 Magic 2 IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", - "name": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", - "roles": [ - "CAS" - ] - } - ], - "filename": "c-101.png", - "enabled": true, - "liveries": { - "i brigada aerea - chile early green n.1 a-36 halcon": { - "name": "I Brigada Aerea - Chile Early Green", - "countries": [ - "CHL" - ] - }, - "aviodev skin": { - "name": "Aviodev Skin", - "countries": [ - "CUB", - "AUS", - "PRT", - "SUN", - "USA", - "BLR", - "HRV", - "LBN", - "SVK", - "TUR", - "ARG", - "BEL", - "FIN", - "SAU", - "UN", - "RSI", - "CHL", - "AUT", - "EGY", - "CAN", - "QAT", - "YUG", - "ISR", - "PER", - "BHR", - "NGA", - "IDN", - "KAZ", - "INS", - "AUSAF", - "PAK", - "SVN", - "RED", - "ROU", - "DEN", - "TUN", - "IND", - "CZE", - "MYS", - "GHA", - "OMN", - "CYP", - "RSO", - "IRN", - "UKR", - "JPN", - "THA", - "JOR", - "RSA", - "MEX", - "NOR", - "ITA", - "NETH", - "SUI", - "VNM", - "KOR", - "GRG", - "SDN", - "UK", - "BRA", - "ARE", - "ABH", - "BOL", - "RUS", - "PHL", - "SPN", - "MAR", - "DZA", - "GDR", - "HND", - "PRK", - "SRB", - "BGR", - "LBY", - "VEN", - "IRQ", - "SYR", - "NZG", - "GRC", - "POL", - "SWE", - "GER", - "CHN", - "YEM", - "FRA", - "HUN", - "ETH", - "BLUE", - "KWT" - ] - }, - "georgia combat fictional green": { - "name": "Georgia Combat Fictional Green", - "countries": [ - "GRG" - ] - }, - "i brigada aerea - chile early grey n.1 a-36 halcon": { - "name": "I Brigada Aerea - Chile Early Grey", - "countries": [ - "CHL" - ] - }, - "royal jordanian air force": { - "name": "Royal jordanian Air Force ", - "countries": [ - "JOR" - ] - }, - "georgia combat fictional spots": { - "name": "Georgia Combat Fictional Spots", - "countries": [ - "GRG" - ] - }, - "i brigada aerea - grupo de aviacion n.1 a-36 halcon desert skin": { - "name": "I Brigada Aerea - Grupo de Aviacion N.1 A-36 HALCON Desert Skin", - "countries": [ - "CHL" - ] - }, - "i brigada aerea - chile early agressor nº410 n.1 a-36 halcon": { - "name": "I Brigada Aerea - Chile Early Agressor Nº410 ", - "countries": [ - "CHL" - ] - }, - "usaf agressor fictional": { - "name": "USAF Agressor Fictional", - "countries": [ - "USA", - "AUSAF", - "BLUE" - ] - }, - "i brigada aerea - grupo de aviacion n.1 a-36 halcon": { - "name": "I Brigada Aerea - Grupo de Aviacion N.1 A-36 HALCON", - "countries": [ - "CHL" - ] - }, - "i brigada aerea - chile early agressor nº411 n.1 a-36 halcon": { - "name": "I Brigada Aerea - Chile Early Agressor Nº411", - "countries": [ - "CHL" - ] - }, - "claex green camu skin - centro logistico de armamento y experimentacion": { - "name": "CLAEX Green Camu Skin - Centro Logistico de Armamento y Experimentacion", - "countries": [ - "RED", - "SPN", - "BLUE" - ] - }, - "russia combat fictional": { - "name": "Russia Combat Fictional", - "countries": [ - "RED", - "RUS" - ] - }, - "georgia combat fictional wolf": { - "name": "Georgia Combat Fictional Wolf", - "countries": [ - "GRG" - ] - }, - "honduras - air force comayagua coronel jose enrique soto cano air base skin 1": { - "name": "Honduras - Air Force Comayagua Coronel Jose Enrique Soto Cano Air Base Skin 1", - "countries": [ - "HND" - ] - }, - "i brigada aerea - grupo de aviacion n.3 a-36 halcon": { - "name": "I Brigada Aerea - Grupo de Aviacion N.3 A-36 HALCON", - "countries": [ - "CHL" - ] - }, - "honduras - air force comayagua coronel jose enrique soto cano air base skin 2": { - "name": "Honduras - Air Force Comayagua Coronel Jose Enrique Soto Cano Air Base Skin 2", - "countries": [ - "HND" - ] - }, - "claex desert camu skin - centro logistico de armamento y experimentacion": { - "name": "CLAEX Desert Camu Skin - Centro Logistico de Armamento y Experimentacion", - "countries": [ - "RED", - "SPN", - "BLUE" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "C-130": { - "name": "C-130", - "coalition": "blue", - "label": "C-130 Hercules", - "era": "Early Cold War", - "shortLabel": "130", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "c-130.png", - "enabled": true, - "liveries": { - "belgian air force": { - "name": "Belgian Air Force", - "countries": [ - "BEL" - ] - }, - "iriaf 5-8518": { - "name": "IRIAF 5-8518", - "countries": [ - "IRN" - ] - }, - "israel defence force": { - "name": "Israel Defence Force", - "countries": [ - "ISR" - ] - }, - "haf gray": { - "name": "Hellenic Airforce - Gray", - "countries": [ - "GRC" - ] - }, - "turkish air force": { - "name": "Turkish Air Force", - "countries": [ - "TUR" - ] - }, - "royal danish air force": { - "name": "Royal Danish Air Force", - "countries": [ - "DEN" - ] - }, - "algerian af green": { - "name": "Algerian AF Green", - "countries": [ - "DZA" - ] - }, - "royal netherlands air force": { - "name": "Royal Netherlands Air Force", - "countries": [ - "NETH" - ] - }, - "canada's air force": { - "name": "Canada's Air Force", - "countries": [ - "CAN" - ] - }, - "royal norwegian air force": { - "name": "Royal Norwegian Air Force", - "countries": [ - "NOR" - ] - }, - "iriaf 5-8503": { - "name": "IRIAF 5-8503", - "countries": [ - "IRN" - ] - }, - "us air force": { - "name": "US Air Force", - "countries": [ - "USA" - ] - }, - "royal air force": { - "name": "Royal Air Force", - "countries": [ - "UK" - ] - }, - "air algerie l-382 white": { - "name": "Air Algerie L-382 White", - "countries": [ - "DZA" - ] - }, - "french air force": { - "name": "French Air Force", - "countries": [ - "FRA" - ] - }, - "spanish air force": { - "name": "Spanish Air Force", - "countries": [ - "SPN" - ] - }, - "algerian af h30 white": { - "name": "Algerian AF H30 White", - "countries": [ - "DZA" - ] - } - }, - "type": "Aircraft", - "description": "4 turboprop, stright wing, 3 crew. Hercules", - "abilities": "Transport", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "C-17A": { - "name": "C-17A", - "coalition": "blue", - "label": "C-17A Globemaster", - "era": "Modern", - "shortLabel": "C17", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "c-17.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 3 crew. Globemaster", - "abilities": "Transport", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "E-2C": { - "name": "E-2C", - "coalition": "blue", - "label": "E-2D Hawkeye", - "era": "Mid Cold War", - "shortLabel": "E2", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "AWACS" - ] - } - ], - "filename": "e-2.png", - "enabled": true, - "liveries": { - "vaw-125 tigertails": { - "name": "VAW-125 Tigertails", - "countries": [ - "USA" - ] - }, - "e-2d demo": { - "name": "E-2D Demo", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 turboprop, straight wing, 5 crew. Hawkeye", - "abilities": "AEW, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "E-3A": { - "name": "E-3A", - "coalition": "blue", - "label": "E-3A Sentry", - "era": "Mid Cold War", - "shortLabel": "E3", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "AWACS" - ] - } - ], - "filename": "e-3.png", - "enabled": true, - "liveries": { - "nato": { - "name": "nato", - "countries": [ - "USA", - "FRA", - "UK" - ] - }, - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 17 crew. Sentry", - "abilities": "AEW", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "F-117A": { - "name": "F-117A", - "coalition": "blue", - "label": "F-117A Nighthawk", - "era": "Late Cold War", - "shortLabel": "117", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-12*2", - "name": "GBU-12*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2", - "name": "GBU-10*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-27 - 2000lb Laser Guided Penetrator Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-27*2", - "name": "GBU-27*2", - "roles": [ - "Strike" - ] - } - ], - "filename": "f-117.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "usaf standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, delta wing, 1 crew. Nighthawk", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-14A-135-GR": { - "name": "F-14A-135-GR", - "coalition": "blue", - "label": "F-14A-135-GR Tomcat", - "era": "Late Cold War", - "shortLabel": "14A", - "loadouts": [ - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", - "name": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-7F*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-7F*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-9L*4, XT*2", - "name": "AIM-54A-MK47*4, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK47*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 1 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7F", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", - "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7F", - "quantity": 4 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7F*4, AIM-9L*4, XT*2", - "name": "AIM-7F*4, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7F", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7F*6, AIM-9L*2, XT*2", - "name": "AIM-7F*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", - "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "GBU-24", - "quantity": 1 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", - "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "3 BDU-33", - "quantity": 4 - } - ], - "enabled": true, - "code": "BDU-33*12", - "name": "BDU-33*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "MAK79 4 BDU-33", - "quantity": 2 - }, - { - "name": "MAK79 3 BDU-33", - "quantity": 2 - } - ], - "enabled": true, - "code": "BDU-33*14", - "name": "BDU-33*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "GBU-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2", - "name": "GBU-10*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "GBU-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4", - "name": "GBU-12*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-16", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-16*4", - "name": "GBU-16*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-24", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-24*2", - "name": "GBU-24*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "2 SUU-25 * 8 LUU-2", - "quantity": 1 - }, - { - "name": "SUU-25 * 8 LUU-2", - "quantity": 1 - } - ], - "enabled": true, - "code": "LUU-2*24", - "name": "LUU-2*24", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-20*4", - "name": "Mk-20*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-81", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-81", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-81*14", - "name": "Mk-81*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-82", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-82", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*14", - "name": "Mk-82*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-82", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82*4", - "name": "Mk-82*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82AIR", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82AIR*4", - "name": "Mk-82AIR*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-83", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-83*4", - "name": "Mk-83*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-84", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-84*4", - "name": "Mk-84*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "XT*2", - "name": "XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*12", - "name": "Zuni*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 3 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*28", - "name": "Zuni*28", - "roles": [ - "Strike", - "CAS" - ] - } - ], - "filename": "f-14.png", - "enabled": true, - "liveries": { - "rogue nation(top gun - maverick)": { - "name": "Top Gun: Maverick - Rogue Nation", - "countries": "All" - }, - "vf-21 freelancers 200": { - "name": "VF-21 Freelancers 200", - "countries": "All" - }, - "vf-11 ae106 1988": { - "name": "VF-11 AE106 1988", - "countries": "All" - }, - "vf-301 nd113": { - "name": "VF-301 ND113 by Mach3DS", - "countries": "All" - }, - "vf-301 nd111": { - "name": "VF-301 ND111 by Mach3DS", - "countries": "All" - }, - "vf-154 black knights 101": { - "name": "00 - VF-154 Black Knights 101", - "countries": "All" - }, - "vf-14 tophatters aj206 (1999 allied force)": { - "name": "VF-14 Tophatters AJ206 (1999 Allied Force)", - "countries": "All" - }, - "vf-31 ae204 1988": { - "name": "VF-31 AE204 1988", - "countries": "All" - }, - "vf-1 wolfpack nk102 (1974)": { - "name": "VF-1 Wolfpack NK102 (1974)", - "countries": "All" - }, - "vf-33 starfighters ab201 (1988)": { - "name": "VF-33 Starfighters AB201(Dale Snodgrass)", - "countries": "All" - }, - "vf-31 1991 ae200": { - "name": "VF-31 1991 AE200 by Mach3DS", - "countries": "All" - }, - "vf-41 black aces aj100 (1999 allied force)": { - "name": "VF-41 Black Aces AJ100 (1999 Allied Force)", - "countries": "All" - }, - "vf-41 black aces aj101 (1999 allied force)": { - "name": "VF-41 Black Aces AJ101 (1999 Allied Force)", - "countries": "All" - }, - "vf-31 1991 ae205": { - "name": "VF-31 1991 AE205 by Mach3DS", - "countries": "All" - }, - "vf-41 black aces aj102 (1999 allied force)": { - "name": "VF-41 Black Aces AJ102 (1999 Allied Force)", - "countries": "All" - }, - "vf-1 wolfpack nk101 (1974)": { - "name": "VF-1 Wolfpack NK101 (1974)", - "countries": "All" - }, - "vf-31 ae200 1988": { - "name": "VF-31 AE200 1988", - "countries": "All" - }, - "vf-11 red rippers 106": { - "name": "VF-11 Red Rippers 106", - "countries": "All" - }, - "vf-1 wolfpack nk103 (1974)": { - "name": "VF-1 Wolfpack NK103 (1974)", - "countries": "All" - }, - "vf-14 tophatters ab103 (1976)": { - "name": "VF-14 Tophatters AB103(1976)", - "countries": "All" - }, - "vf-111 sundowners 200": { - "name": "VF-111 Sundowners 200", - "countries": "All" - }, - "top gun 114": { - "name": "Top Gun 114 Maverick and Goose", - "countries": "All" - }, - "vf-11 ae103 1988": { - "name": "VF-11 AE103 1988", - "countries": "All" - }, - "vx-4 vandy one sad bunny (1992)": { - "name": "VX-4 Vandy One Sad Bunny (1992)", - "countries": "All" - }, - "vf-211 fighting checkmates 100 (2001)": { - "name": "VF-211 Fighting Checkmates 100 (2001)", - "countries": [ - "USA" - ] - }, - "vf-301 nd104": { - "name": "VF-301 ND104 by Mach3DS", - "countries": "All" - }, - "vf-32 swordsmen ab200 (1976)": { - "name": "VF-32 Swordsmen AB200 (1976)", - "countries": "All" - }, - "vf-211 fighting checkmates 105": { - "name": "VF-211 Fighting Checkmates 105", - "countries": "All" - }, - "vf-14 tophatters ab100 (1976)": { - "name": "VF-14 Tophatters AB100(1976)", - "countries": "All" - }, - "vf-11 ae101 1988": { - "name": "VF-11 AE101 1988", - "countries": "All" - }, - "vf-14 tophatters aj202 (1999 allied force)": { - "name": "VF-14 Tophatters AJ202 (1999 Allied Force)", - "countries": "All" - }, - "vf-1 wolfpack nk100 (1974)": { - "name": "VF-1 Wolfpack NK100 (1974)", - "countries": "All" - }, - "vf-301 nd101 hivis": { - "name": "VF-301 ND101 HiVis by Mach3DS", - "countries": "All" - }, - "vf-14 tophatters aj201 (1999 allied force)": { - "name": "VF-14 Tophatters AJ201 (1999 Allied Force)", - "countries": "All" - }, - "vf-14 tophatters aj200 (1999) 80th aniversary": { - "name": "VF-14 Tophatters AJ200 (1999) 80th Anniversary", - "countries": "All" - }, - "vf-41 black aces aj104 (1999 allied force)": { - "name": "VF-41 Black Aces AJ104 (1999 Allied Force)", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swing wing, 2 crew. Tomcat", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-14B": { - "name": "F-14B", - "coalition": "blue", - "label": "F-14B Tomcat", - "era": "Late Cold War", - "shortLabel": "14B", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "XT*2", - "name": "XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*6, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 6 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*6, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*6, AIM-9M*2, XT*2", - "name": "AIM-7M*6, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 6 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*6, AIM-9L*2, XT*2", - "name": "AIM-7M*6, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "name": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", - "name": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "name": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-9M*2, AIM-9L*2, XT*2", - "name": "AIM-54A-MK47*4, AIM-9M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK47*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "name": "AIM-54A-MK60*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*4, AIM-9M*4, XT*2", - "name": "AIM-54C-MK47*4, AIM-9M*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9M", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", - "name": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-7M", - "quantity": 4 - }, - { - "name": "LAU-138 AIM-9L", - "quantity": 2 - }, - { - "name": "LAU-7 AIM-9L", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-7M*4, AIM-9L*4, XT*2", - "name": "AIM-7M*4, AIM-9L*4, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 3 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk47", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 3 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 3 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "AIM-54C-Mk47", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "name": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "MAK79 4 BDU-33", - "quantity": 2 - }, - { - "name": "MAK79 3 BDU-33", - "quantity": 2 - } - ], - "enabled": true, - "code": "BDU-33*14", - "name": "BDU-33*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "3 BDU-33", - "quantity": 4 - } - ], - "enabled": true, - "code": "BDU-33*12", - "name": "BDU-33*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "GBU-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2", - "name": "GBU-10*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "GBU-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4", - "name": "GBU-12*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-16", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-16*4", - "name": "GBU-16*4", - "roles": [ - "Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-24", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-24*2", - "name": "GBU-24*2", - "roles": [ - "Strike", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-84", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-84*4", - "name": "Mk-84*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-83", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-83*4", - "name": "Mk-83*4", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Mk-82", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82*4", - "name": "Mk-82*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-82", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-82", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*14", - "name": "Mk-82*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "MAK79 4 Mk-81", - "quantity": 2 - }, - { - "name": "MAK79 3 Mk-81", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-81*14", - "name": "Mk-81*14", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "Mk-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-20*4", - "name": "Mk-20*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-82AIR", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82AIR*4", - "name": "Mk-82AIR*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*12", - "name": "Zuni*12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 LAU-10 - 4 ZUNI MK 71", - "quantity": 3 - }, - { - "name": "LAU-10 - 4 ZUNI MK 71", - "quantity": 1 - } - ], - "enabled": true, - "code": "Zuni*28", - "name": "Zuni*28", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "2 SUU-25 * 8 LUU-2", - "quantity": 1 - }, - { - "name": "SUU-25 * 8 LUU-2", - "quantity": 1 - } - ], - "enabled": true, - "code": "LUU-2*24", - "name": "LUU-2*24", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 1 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*1", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*1", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", - "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "GBU-24", - "quantity": 1 - }, - { - "name": "AIM-7M", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", - "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-82", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - }, - { - "items": [ - { - "name": "LAU-138 AIM-9M", - "quantity": 2 - }, - { - "name": "LANTIRN Targeting Pod", - "quantity": 1 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 2 - }, - { - "name": "Mk-20", - "quantity": 2 - }, - { - "name": "AIM-7M", - "quantity": 1 - }, - { - "name": "AIM-54A-Mk60", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", - "roles": [ - "Strike", - "CAS", - "Runway Attack", - "Strike" - ] - } - ], - "filename": "f-14.png", - "enabled": true, - "liveries": { - "vf-103 sluggers 206 (1995)": { - "name": "VF-103 Sluggers 206 (1995)", - "countries": "All" - }, - "vf-143 pukin dogs low vis": { - "name": "VF-143 Pukin Dogs Low Vis (1998)", - "countries": "All" - }, - "rogue nation(top gun - maverick)": { - "name": "Top Gun: Maverick - Rogue Nation", - "countries": "All" - }, - "vf-31 tomcatters nk101 (2004)": { - "name": "VF-31 Tomcatters NK101 (2004)", - "countries": "All" - }, - "vf-32 fighting swordsmen 103": { - "name": "VF-32 Fighting Swordsmen 103 (1998)", - "countries": "All" - }, - "vf-103 jolly rogers hi viz": { - "name": "VF-103 Jolly Rogers Hi Viz", - "countries": "All" - }, - "vf-101 dark": { - "name": "VF-101 Dark", - "countries": "All" - }, - "vf-102 diamondbacks": { - "name": "01 - VF-102 Diamondbacks 1996", - "countries": "All" - }, - "vf-143 pukin dogs low vis (1995)": { - "name": "VF-143 Pukin Dogs Low Vis (1995)", - "countries": "All" - }, - "vx-4 xf-51 1988": { - "name": "VX-4 XF-51 1988", - "countries": "All" - }, - "top gun 114 hb weather": { - "name": "Top Gun 114 Maverick and Goose", - "countries": "All" - }, - "vf-24 renegades": { - "name": "VF-24 Renegades Low-Viz", - "countries": "All" - }, - "vf-11 red rippers (1997)": { - "name": "VF-11 Red Rippers (1997)", - "countries": "All" - }, - "vf-32 fighting swordsmen 100 (2000)": { - "name": "VF-32 Fighting Swordsmen 100 (2000)", - "countries": [ - "USA" - ] - }, - "vf-74 bedevilers 1991": { - "name": "VF-74 Be-Devilers 1991", - "countries": "All" - }, - "santa": { - "name": "Fictional Christmas Livery", - "countries": "All" - }, - "vf-103 sluggers 207 (1991)": { - "name": "VF-103 Sluggers 207 (1991)", - "countries": "All" - }, - "vf-32 fighting swordsmen 101": { - "name": "VF-32 Fighting Swordsmen 101 (1998)", - "countries": "All" - }, - "vf-103 last ride": { - "name": "VF-103 Last Ride", - "countries": "All" - }, - "vf-143 pukin dogs cag": { - "name": "VF-143 Pukin' Dogs CAG", - "countries": "All" - }, - "vx-9 vampires xf240 white whale": { - "name": "VX-9 Vampires XF240 White Whale", - "countries": "All" - }, - "vf-74 adversary": { - "name": "VF-74 Adversary", - "countries": "All" - }, - "vx-9 vandy 41 (1995)": { - "name": "VX-9 Vandy 41 (1995)", - "countries": "All" - }, - "vf-142 ghostriders": { - "name": "VF-142 Ghostriders", - "countries": "All" - }, - "vf-211 fighting checkmates": { - "name": "VF-211 Fighting Checkmates", - "countries": "All" - }, - "vf-101 grim reapers low vis": { - "name": "VF-101 Grim Reapers Low Vis", - "countries": "All" - }, - "chromecat": { - "name": "Fictional Chrome Cat ", - "countries": "All" - }, - "vf-32 fighting swordsmen 102": { - "name": "VF-32 Fighting Swordsmen 102 (1998)", - "countries": "All" - }, - "vf-102 diamondbacks 102": { - "name": "VF-102 Diamondbacks 102 (2000)", - "countries": "All" - }, - "vf-101 red": { - "name": "VF-101 Red", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swing wing, 2 crew. Tomcat", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-15C": { - "name": "F-15C", - "coalition": "blue", - "label": "F-15C Eagle", - "era": "Late Cold War", - "shortLabel": "15C", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-120B*4, AIM-7M*2, AIM-9M*2, Fuel*3", - "name": "AIM-120B*4, AIM-7M*2, AIM-9M*2, Fuel*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*6,Fuel", - "name": "AIM-9*2,AIM-120*6,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-120*4,Fuel*3", - "name": "AIM-9*4,AIM-120*4,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-120*4,Fuel", - "name": "AIM-9*4,AIM-120*4,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel*3", - "name": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*6,Fuel*3", - "name": "AIM-9*2,AIM-120*6,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4,Fuel", - "name": "AIM-9*4,AIM-7*4,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120*8,Fuel", - "name": "AIM-120*8,Fuel", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4,Fuel*3", - "name": "AIM-9*4,AIM-7*4,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 3 - }, - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-120*8,Fuel*3", - "name": "AIM-120*8,Fuel*3", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", - "name": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", - "roles": [ - "CAP" - ] - } - ], - "filename": "f-15.png", - "enabled": true, - "liveries": { - "106th sqn (8th airbase)": { - "name": "106th SQN (8th Airbase)", - "countries": [ - "ISR" - ] - }, - "433rd weapons sqn (wa)": { - "name": "433rd Weapons SQN (WA)", - "countries": [ - "USA" - ] - }, - "493rd fighter sqn (ln)": { - "name": "493rd Fighter SQN (LN)", - "countries": [ - "USA" - ] - }, - "12th fighter sqn (ak)": { - "name": "12th Fighter SQN (AK)", - "countries": [ - "USA" - ] - }, - "390th fighter sqn": { - "name": "390th Fighter SQN", - "countries": [ - "USA" - ] - }, - "65th aggressor sqn (wa) flanker": { - "name": "65th Aggressor SQN (WA) Flanker", - "countries": [ - "USA", - "AUSAF" - ] - }, - "65th aggressor sqn (wa) super_flanker": { - "name": "65th Aggressor SQN (WA) SUPER_Flanker", - "countries": [ - "USA", - "AUSAF" - ] - }, - "65th aggressor sqn (wa) mig": { - "name": "65th Aggressor SQN (WA) MiG", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ferris scheme": { - "name": "Ferris Scheme", - "countries": [ - "USA" - ] - }, - "58th fighter sqn (eg)": { - "name": "58th Fighter SQN (EG)", - "countries": [ - "USA" - ] - }, - "haf aegean ghost": { - "name": "Hellenic Airforece - Aegean Ghost (Fictional)", - "countries": [ - "GRC" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 2 crew, all weather fighter. Eagle.", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-16C_50": { - "name": "F-16C_50", - "coalition": "blue", - "label": "F-16C Viper", - "era": "Late Cold War", - "shortLabel": "16C", - "loadouts": [ - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", - "name": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 3 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", - "name": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120B*2, AIM-9M*4, FUEL*3", - "name": "AIM-120B*2, AIM-9M*4, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120B*4, AIM-9M*2, FUEL*3", - "name": "AIM-120B*4, AIM-9M*2, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120B AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120B*6, FUEL*3", - "name": "AIM-120B*6, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65D*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65D*2, FUEL*2, ECM, TGP", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 1 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65H*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65H*2, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65H*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65H*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", - "name": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BRU-57 with 2 x CBU-103 - 202 x CEM, CBU with WCMD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-103*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-103*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BRU-57 with 2 x CBU-105 - 10 x SFW, CBU with WCMD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-105*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-105*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x CBU-87 - 202 x CEM Cluster Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x CBU-97 - 10 x SFW Cluster Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-12*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-12*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-12*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-12*4, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-24 Paveway III - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-24*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-24*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-31-1B*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-31-1B*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-31-3B*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-31-3B*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-38*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-38*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BRU-57 with 2 x GBU-38 - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, GBU-38*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, GBU-38*4, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts Mk61, Practice", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 3 x Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 3 x Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*2, AIM-9X*4, FUEL*2", - "name": "AIM-120C*2, AIM-9X*4, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "name": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AGM-88C*2, FUEL*3, TGP, HTS", - "name": "AIM-120C*4, AGM-88C*2, FUEL*3, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/ASQ-213 HTS - HARM Targeting System", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AGM-88C*4, ECM, TGP, HTS", - "name": "AIM-120C*4, AGM-88C*4, ECM, TGP, HTS", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", - "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*3", - "name": "AIM-120C*4, AIM-9X*2, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", - "name": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2", - "name": "AIM-120C*6, FUEL*2", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2, ECM", - "name": "AIM-120C*6, FUEL*2, ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "ALQ-184 Long - ECM Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*2, ECM, TGP", - "name": "AIM-120C*6, FUEL*2, ECM, TGP", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*3", - "name": "AIM-120C*6, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 6 - }, - { - "name": "Fuel tank 370 gal", - "quantity": 2 - }, - { - "name": "Fuel tank 300 gal", - "quantity": 1 - }, - { - "name": "AN/AAQ-28 LITENING - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C*6, FUEL*3, TGP", - "name": "AIM-120C*6, FUEL*3, TGP", - "roles": [ - "Escort" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - } - ], - "filename": "f-16c.png", - "enabled": true, - "liveries": { - "haf_347_perseus": { - "name": "HAF 347S Perseus Squadron", - "countries": [ - "GRC" - ] - }, - "ami, 5 stormo 23 gruppo": { - "name": "Italian Air Force, 5° Stormo, 23 Gruppo", - "countries": [ - "ITA" - ] - }, - "haf_337_ghost": { - "name": "HAF 337 Ghost Squadron", - "countries": [ - "GRC" - ] - }, - "haf_ 330_thunder": { - "name": "HAF 330 Thunder Squadron", - "countries": [ - "GRC" - ] - }, - "haf_336_olympus": { - "name": "HAF 336 Olympus Squadron", - "countries": [ - "GRC" - ] - }, - "iaf_117th_squadron": { - "name": "IAF 117th squadron", - "countries": [ - "ISR" - ] - }, - "jasdf 8th tfs": { - "name": "JASDF 8th TFS", - "countries": [ - "JPN" - ] - }, - "haf_340_fox": { - "name": "HAF 340 Fox Squadron", - "countries": [ - "GRC" - ] - }, - "haf_346_jason": { - "name": "HAF 346 Jason Squadron", - "countries": [ - "GRC" - ] - }, - "paf_no.9_griffins_1": { - "name": "PAF No.9 Griffins (TRIBUTE TO WC NAUMAN)", - "countries": [ - "PAK" - ] - }, - "522nd_fighter_squadron": { - "name": "522nd Fighter Squadron 'Fireballs'", - "countries": [ - "USA" - ] - }, - "default": { - "name": "default livery", - "countries": [ - "USA" - ] - }, - "18th agrs arctic splinter": { - "name": "18th AGRS Arсtic Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "iaf_115th_aggressors_squadron": { - "name": "IAF 115th aggressors squadron", - "countries": [ - "ISR" - ] - }, - "chile air force 732": { - "name": "Chile Air Force 732", - "countries": [ - "CHL" - ] - }, - "iaf_110th_squadron": { - "name": "IAF 110th squadron", - "countries": [ - "ISR" - ] - }, - "paf_no.29_aggressors": { - "name": "PAF No.29 Aggressor", - "countries": [ - "PAK" - ] - }, - "79th_fighter_squadron": { - "name": "79th Fighter Squadron 'Tigers'", - "countries": [ - "USA" - ] - }, - "paf_no.5_falcons": { - "name": "PAF No.5 Falcons", - "countries": [ - "PAK" - ] - }, - "18th agrs splinter": { - "name": "18th AGRS Blue Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "dark_viper": { - "name": "F-16C Dark Viper", - "countries": [ - "USA" - ] - }, - "jasdf 6th tfs": { - "name": "JASDF 6th TFS", - "countries": [ - "JPN" - ] - }, - "23rd_fighter_squadron": { - "name": "23rd Fighter Squadron 'Fighting Hawks'", - "countries": [ - "USA" - ] - }, - "polish af standard": { - "name": "Polish AF standard", - "countries": [ - "POL" - ] - }, - "480th_fighter_squadron": { - "name": "480th Fighter Squadron 'Warhawks'", - "countries": [ - "USA" - ] - }, - "18th agrs bdu splinter": { - "name": "18th AGRS BDU Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "174th_fighter_squadron": { - "name": "174th Fighter Squadron ANG,Iowa AFB", - "countries": [ - "USA" - ] - }, - "thk_191_filo": { - "name": "Türk Hava Kuvvetleri, 191 Filo", - "countries": [ - "TUR" - ] - }, - "chile air force 746": { - "name": "Chile Air Force 746", - "countries": [ - "CHL" - ] - }, - "haf_335_tiger": { - "name": "HAF 335 Tiger Squadron", - "countries": [ - "GRC" - ] - }, - "77th_fighter_squadron": { - "name": "77th Fighter Squadron 'Gamblers' ", - "countries": [ - "USA" - ] - }, - "132nd_wing _iowa_ang": { - "name": "132nd Wing Iowa ANG, Des Moines AFB", - "countries": [ - "USA" - ] - }, - "usaf 64th aggressor sqn-splinter": { - "name": "USAF 64th Aggressor SQN-Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "14th_fighter_squadron": { - "name": "14th Fighter Squadron 'Samurais'", - "countries": [ - "USA" - ] - }, - "152nd_fighter_squadron": { - "name": "152nd Fighter Squadron 'Las Vaqueros'", - "countries": [ - "USA" - ] - }, - "179th_fighter_squadron": { - "name": "179th Fighter Squadron 'Bulldogs'", - "countries": [ - "USA" - ] - }, - "paf_no.19_sherdils": { - "name": "PAF No.19 Sherdils", - "countries": [ - "PAK" - ] - }, - "64th_aggressor_squadron_ghost": { - "name": "64th Aggressor Squadron “Ghost", - "countries": [ - "USA", - "AUSAF" - ] - }, - "paf_no.9 griffins_2": { - "name": "PAF No.9 Griffins", - "countries": [ - "PAK" - ] - }, - "paf_no.11_arrows": { - "name": "PAF No.11 Arrows", - "countries": [ - "PAK" - ] - }, - "haf_343_star": { - "name": "HAF 343 Star Squadron", - "countries": [ - "GRC" - ] - }, - "80th_fighter_squadron": { - "name": "80th Fighter Squadron, Kunsan AFB", - "countries": [ - "USA" - ] - }, - "36th_fighter_squadron": { - "name": "36th Fighter Squadron Osan Air Base", - "countries": [ - "USA" - ] - }, - "22nd_fighter_squadron": { - "name": "22nd Fighter Squadron 'Stingers'", - "countries": [ - "USA" - ] - }, - "55th_fighter_squadron": { - "name": "55th Fighter Squadron 'Fifty Fifth'", - "countries": [ - "USA" - ] - }, - "iaf_101st_squadron": { - "name": "IAF 101st squadron", - "countries": [ - "ISR" - ] - }, - "polish_af_31blt6th_tactical_sqn": { - "name": "Polish AF 31.Blt 6th Tactical Sqn (Poznań-Krzesiny AB) - Tiger Meet", - "countries": [ - "POL" - ] - }, - "13th_fighter_squadron": { - "name": "13th Fighter Squadron 'Panthers'", - "countries": [ - "USA" - ] - }, - "haf_341_arrow": { - "name": "HAF 341 Arrow Squadron", - "countries": [ - "GRC" - ] - }, - "usaf 64th aggressor sqn - shark": { - "name": "USAF 64th Aggressor SQN - Shark", - "countries": [ - "USA", - "AUSAF" - ] - }, - "chile air force 851": { - "name": "Chile Air Force 851", - "countries": [ - "CHL" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew, all weather fighter and strike. Viper.", - "abilities": "Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-4E": { - "name": "F-4E", - "coalition": "blue", - "label": "F-4E Phantom II", - "era": "Mid Cold War", - "shortLabel": "4", - "loadouts": [ - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-45*2,AIM-7*2,Fuel*2,ECM", - "name": "AGM-45*2,AIM-7*2,Fuel*2,ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", - "quantity": 4 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-45*4,AIM-7*2,ECM", - "name": "AGM-45*4,AIM-7*2,ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-65K*4,AIM-7*2,Fuel*2,ECM", - "name": "AGM-65K*4,AIM-7*2,Fuel*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65K - Maverick K (CCD Imp ASM)", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - }, - { - "name": "F-4 Fuel tank-C", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-65K*4,AIM-7M*4,Fuel*3", - "name": "AGM-65K*4,AIM-7M*4,Fuel*3", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", - "quantity": 2 - }, - { - "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM45*2_AGM-65D*4_AIM7*2_ECM", - "name": "AGM45*2_AGM-65D*4_AIM7*2_ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "LAU-7 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4", - "name": "AIM-9*4,AIM-7*4", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "LAU-7 with 2 x AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-9*4,AIM-7*4,Fuel*2", - "name": "AIM-9*4,AIM-7*4,Fuel*2", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "F-4 Fuel tank-C", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel*3", - "name": "Fuel*3", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "GBU-10 - 2000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-10*2,AIM-7*2,Fuel*2,ECM", - "name": "GBU-10*2,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-12*2,AIM-7*2,Fuel*2,ECM", - "name": "GBU-12*2,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MER6 with 6 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*18,AIM-7*2,ECM", - "name": "Mk-82*18,AIM-7*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-82*6,AIM-7*2,Fuel*2,ECM", - "name": "Mk-82*6,AIM-7*2,Fuel*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk-84*2,AIM-7*2,ECM", - "name": "Mk-84*2,AIM-7*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", - "quantity": 4 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk20*12,AIM-7*2,ECM", - "name": "Mk20*12,AIM-7*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "F-4 Fuel tank-W", - "quantity": 2 - }, - { - "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", - "quantity": 2 - }, - { - "name": "ALQ-131 - ECM Pod", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "Mk20*6,AIM-7*2,Fuel*2,ECM", - "name": "Mk20*6,AIM-7*2,Fuel*2,ECM", - "roles": [ - "CAS" - ] - } - ], - "filename": "f-4.png", - "enabled": true, - "liveries": { - "haf aegean ghost": { - "name": "Hellenic Airforce - Aegean Ghost", - "countries": [ - "GRC" - ] - }, - "iriaf asia minor": { - "name": "IRIAF Asia Minor", - "countries": [ - "IRN" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "GER" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 2 crew. Phantom", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-5E-3": { - "name": "F-5E-3", - "coalition": "blue", - "label": "F-5E Tiger", - "era": "Mid Cold War", - "shortLabel": "5", - "loadouts": [ - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9B*2", - "name": "AIM-9B*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 150", - "name": "AIM-9B*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 150*3", - "name": "AIM-9B*2, Fuel 150*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 275", - "name": "AIM-9B*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9B Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9B*2, Fuel 275*3", - "name": "AIM-9B*2, Fuel 275*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9P*2", - "name": "AIM-9P*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 150", - "name": "AIM-9P*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 150*3", - "name": "AIM-9P*2, Fuel 150*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 275", - "name": "AIM-9P*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9P*2, Fuel 275*3", - "name": "AIM-9P*2, Fuel 275*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9P5*2", - "name": "AIM-9P5*2", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 150", - "name": "AIM-9P5*2, Fuel 150", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 150*3", - "name": "AIM-9P5*2, Fuel 150*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 275", - "name": "AIM-9P5*2, Fuel 275", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9P5*2, Fuel 275*3", - "name": "AIM-9P5*2, Fuel 275*3", - "roles": [ - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AN/ASQ-T50 TCTS Pod - ACMI Pod", - "quantity": 1 - }, - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 1 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AN/ASQ-T50, AIM-9P, Fuel 150", - "name": "AN/ASQ-T50, AIM-9P, Fuel 150", - "roles": [] - }, - { - "items": [ - { - "name": "AIM-9P5 Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "F-5 150Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Antiship Mk82", - "name": "Antiship Mk82", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "CBU-52B - 220 x HE/Frag bomblets", - "quantity": 4 - } - ], - "enabled": true, - "code": "CBU-52B*4,AIM-9P*2,Fuel 275", - "name": "CBU-52B*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "CBU-52B - 220 x HE/Frag bomblets", - "quantity": 5 - } - ], - "enabled": true, - "code": "CBU-52B*5,AIM-9*2", - "name": "CBU-52B*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4,AIM-9P*2,Fuel 275", - "name": "GBU-12*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "name": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - } - ], - "enabled": true, - "code": "LAU-3 HE*4,AIM-9P*2,Fuel 275", - "name": "LAU-3 HE*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 4 - } - ], - "enabled": true, - "code": "LAU-3 HEAT*4,AIM-9P*2,Fuel 275", - "name": "LAU-3 HEAT*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "name": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 4 - } - ], - "enabled": true, - "code": "LAU-68 HE*4,AIM-9P*2,Fuel 275", - "name": "LAU-68 HE*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 4 - } - ], - "enabled": true, - "code": "LAU-68 HEAT*4,AIM-9P*2,Fuel 275", - "name": "LAU-68 HEAT*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - }, - { - "name": "M117 - 750lb GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "M-117*4,AIM-9P*2,Fuel 275", - "name": "M-117*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "M117 - 750lb GP Bomb LD", - "quantity": 5 - } - ], - "enabled": true, - "code": "M-117*5,AIM-9*2", - "name": "M-117*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82LD*4,AIM-9P*2,Fuel 275", - "name": "Mk-82LD*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 5 - } - ], - "enabled": true, - "code": "Mk-82LD*5,AIM-9*2", - "name": "Mk-82LD*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "5 x Mk-82 - 500lb GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82LD*7,AIM-9P*2, Fuel 275*2", - "name": "Mk-82LD*7,AIM-9P*2, Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82SE*4,AIM-9P*2,Fuel 275", - "name": "Mk-82SE*4,AIM-9P*2,Fuel 275", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 5 - } - ], - "enabled": true, - "code": "Mk-82SE*5,AIM-9*2", - "name": "Mk-82SE*5,AIM-9*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9P Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - }, - { - "name": "F-5 275Gal Fuel tank", - "quantity": 2 - }, - { - "name": "5 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "Mk-82SE*7,AIM-9P*2, Fuel 275*2", - "name": "Mk-82SE*7,AIM-9P*2, Fuel 275*2", - "roles": [ - "CAS", - "Strike" - ] - } - ], - "liveryID": [ - "ir iriaf 43rd tfs" - ], - "filename": "f-5.png", - "enabled": true, - "liveries": { - "us aggressor vfc-13 40": { - "name": "Aggressor VFC-13 40", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch swiss generic": { - "name": "Swiss Generic two-tone skin", - "countries": [ - "SUI" - ] - }, - "tw ngrc 5315": { - "name": "NGRC 5thFG 5315", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3079": { - "name": "J-3079", - "countries": [ - "SUI" - ] - }, - "sa royal saudi air force": { - "name": "Royal Saudi Air Force", - "countries": [ - "SAU" - ] - }, - "no 336 sq": { - "name": "336 Skvadron", - "countries": [ - "NOR" - ] - }, - "tw rocaf 7thfg(m)": { - "name": "ROCAF 7thFG(LV)", - "countries": [ - "USA", - "AUSAF" - ] - }, - "us aggressor vfc-111 105 wwii b": { - "name": "Sundowners VFC-111 105 WWII B", - "countries": [ - "USA", - "AUSAF" - ] - }, - "br fab 4828": { - "name": "2/1 GAvCa - FAB 4828", - "countries": [ - "BRA" - ] - }, - "usaf 'southeast asia'": { - "name": "USAF 'Southeast Asia'", - "countries": [ - "USA", - "AUSAF" - ] - }, - "br fab 4846": { - "name": "FAB 4846", - "countries": [ - "BRA" - ] - }, - "aggressor vfc-13 21": { - "name": "Aggressor VFC-13 21", - "countries": [ - "USA", - "AUSAF" - ] - }, - "no 334 sqn 373": { - "name": "RNoAF 334 sqn 373", - "countries": [ - "NOR" - ] - }, - "rocaf 7th fighter group": { - "name": "ROCAF 7th Fighter Group", - "countries": [ - "AUSAF" - ] - }, - "ch j-3036 2017": { - "name": "J-3036 Sion 2017", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-111 116": { - "name": "Sundowners VFC-116", - "countries": [ - "USA", - "AUSAF" - ] - }, - "black 'mig-28'": { - "name": "black 'Mig-28'", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3073 2017": { - "name": "J-3073_2017", - "countries": [ - "SUI" - ] - }, - "fi 11th fs lapland air command": { - "name": "FiAF 11th FS Lapland Air Command", - "countries": [ - "FIN" - ] - }, - "ir iriaf azarakhsh": { - "name": "HESA Azarakhsh", - "countries": [ - "IRN" - ] - }, - "ch j-3098": { - "name": "J-3098", - "countries": [ - "SUI" - ] - }, - "ir iriaf 43rd tfs": { - "name": "IRIAF - 43rd TFS", - "countries": [ - "IRN" - ] - }, - "no 338 sqn 215": { - "name": "RNoAF 338 sqn 215", - "countries": [ - "NOR" - ] - }, - "us usaf grape 31": { - "name": "USAF Grape 31", - "countries": [ - "USA", - "AUSAF" - ] - }, - "no 332 sqn ah-p": { - "name": "RNoAF 332 sqn AH-P", - "countries": [ - "NOR" - ] - }, - "ch j-3001 variante 1996": { - "name": "J-3001 GRD Emmen 1996", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-111 01": { - "name": "Sundowners VFC-111 01", - "countries": [ - "USA", - "AUSAF" - ] - }, - "3rd main jet base group command, turkey": { - "name": "133 squadron, 3rd Main Jet Base Group Command, Turkey", - "countries": [ - "TUR" - ] - }, - "kr rokaf 10th fighter wing": { - "name": "ROKAF 10th FW KF-5E 10-584", - "countries": [ - "KOR" - ] - }, - "sp spanish air force 21-51": { - "name": "Ejercito del Aire Camo 21-51", - "countries": [ - "SPN" - ] - }, - "aggressor vfc-13 11": { - "name": "Aggressor VFC-13 11", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3001 variante 1986": { - "name": "J-3001 GRD Emmen 1986", - "countries": [ - "SUI" - ] - }, - "usa standard": { - "name": "Standard Gray", - "countries": [ - "BRA", - "MYS", - "AUS", - "ABH", - "RUS", - "SPN", - "ISR", - "USA", - "BHR", - "BLR", - "HRV", - "RSO", - "SVK", - "IRN", - "UKR", - "TUR", - "JPN", - "PRK", - "SRB", - "KAZ", - "BGR", - "BEL", - "INS", - "THA", - "AUSAF", - "PAK", - "JOR", - "FIN", - "MEX", - "NOR", - "IRQ", - "SYR", - "ITA", - "GRC", - "POL", - "NETH", - "GER", - "SUI", - "CHN", - "SAU", - "SWE", - "ROU", - "FRA", - "KOR", - "HUN", - "AUT", - "GRG", - "DEN", - "TUN", - "EGY", - "IND", - "CZE", - "CAN", - "SDN", - "UK" - ] - }, - "5th fs merzifon air base, turkey": { - "name": "5th fs Merzifon air base, Turkish air force", - "countries": [ - "TUR" - ] - }, - "ch j-3001 variante 2000": { - "name": "J-3001 FlSt 08 2000", - "countries": [ - "SUI" - ] - }, - "ir iriaf camo": { - "name": "IRIAF F-5E Standard", - "countries": [ - "IRN" - ] - }, - "it aereonautica militare italiana": { - "name": "Aereonautica Militare Italiana", - "countries": [ - "ITA" - ] - }, - "ch j-3038": { - "name": "J-3038", - "countries": [ - "SUI" - ] - }, - "ch j-3033_2017": { - "name": "J-3033_2017", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-13 28 fict splinter": { - "name": "Aggressor VFC-13 28 Fictional Splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3025": { - "name": "J-3025 FlSt 11/18 January 2006", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-13 01": { - "name": "Aggressor VFC-13 01", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch patrouille suisse j-3088": { - "name": "Patrouille Suisse J-3088", - "countries": [ - "SUI" - ] - }, - "us aggressor vfc-13 25": { - "name": "Aggressor VFC-13 25", - "countries": [ - "USA", - "AUSAF" - ] - }, - "no 334 sqn ri-h": { - "name": "RNoAF 334 sqn RI-H", - "countries": [ - "NOR" - ] - }, - "br fab 4841": { - "name": "FAB 4841 60th an", - "countries": [ - "BRA" - ] - }, - "aggressor marine scheme": { - "name": "Aggressor Marine Scheme", - "countries": [ - "USA", - "AUSAF" - ] - }, - "sp spanish air force 464-48": { - "name": "Ejercito del Aire 464-48", - "countries": [ - "SPN" - ] - }, - "gr haf f-5e grey": { - "name": "HAF F-5E Grey", - "countries": [ - "GRC" - ] - }, - "tr turkish stars": { - "name": "Turkish Stars", - "countries": [ - "TUR" - ] - }, - "gb no.29 squadron raf": { - "name": "No.29 Squadron RAF (Fictional)", - "countries": [ - "UK" - ] - }, - "br fab 4834": { - "name": "1/1 GAvCa - FAB 4834", - "countries": [ - "BRA" - ] - }, - "ch j-3026": { - "name": "J-3026 FlSt 11 approx. 1989", - "countries": [ - "SUI" - ] - }, - "aggressor snake scheme": { - "name": "Aggressor Snake Scheme", - "countries": [ - "USA", - "AUSAF" - ] - }, - "us aggressor vfc-111 115": { - "name": "Sundowners VFC-115", - "countries": [ - "USA", - "AUSAF" - ] - }, - "us aggressor vmft-401 02 2011": { - "name": "Aggressor VMFT-401 02 2011", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3008": { - "name": "J-3008 FlSt 08/19 February 2005", - "countries": [ - "SUI" - ] - }, - "aggressor desert scheme": { - "name": "Aggressor Desert Scheme", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ch j-3074": { - "name": "J-3074", - "countries": [ - "SUI" - ] - }, - "ch j-3036": { - "name": "J-3036 FlSt 01 1985", - "countries": [ - "SUI" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, single crew. Tiger", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-86F Sabre": { - "name": "F-86F Sabre", - "coalition": "blue", - "label": "F-86F Sabre", - "era": "Early Cold War", - "shortLabel": "86", - "loadouts": [ - { - "items": [ - { - "name": "Fuel Tank 120 gallons", - "quantity": 2 - } - ], - "enabled": true, - "code": "120gal Fuel*2", - "name": "120gal Fuel*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - }, - { - "name": "Fuel Tank 120 gallons", - "quantity": 2 - } - ], - "enabled": true, - "code": "120gal Fuel*2, 200gal Fuel*2", - "name": "120gal Fuel*2, 200gal Fuel*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 120 gallons", - "quantity": 2 - }, - { - "name": "LAU-7 with AIM-9B Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "120gal Fuel*2, GAR-8*2", - "name": "120gal Fuel*2, GAR-8*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - } - ], - "enabled": true, - "code": "200gal Fuel*2", - "name": "200gal Fuel*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - }, - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "200gal Fuel*2, AN-M64*2", - "name": "200gal Fuel*2, AN-M64*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 200 gallons", - "quantity": 2 - }, - { - "name": "2 x HVAR, UnGd Rkts", - "quantity": 4 - } - ], - "enabled": true, - "code": "200gal Fuel*2, HVARx2*4", - "name": "200gal Fuel*2, HVARx2*4", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AN-M64*2", - "name": "AN-M64*2", - "roles": [ - "CAS", - "Strike", - "Antiship Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "LAU-7 with AIM-9B Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "GAR-8*2", - "name": "GAR-8*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "2 x HVAR, UnGd Rkts", - "quantity": 8 - } - ], - "enabled": true, - "code": "HVAR*16", - "name": "HVAR*16", - "roles": [ - "Strike", - "CAS", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "M117 - 750lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "M117*2", - "name": "M117*2", - "roles": [ - "CAS", - "Strike", - "Antiship Strike" - ] - } - ], - "filename": "f-86.png", - "enabled": true, - "liveries": { - "us air force (skyblazers)": { - "name": "US Air Force Jet Team Skyblazer", - "countries": [ - "USA" - ] - }, - "canada air force": { - "name": "Canada Air Force", - "countries": [ - "CAN" - ] - }, - "us air force (squadron 39)": { - "name": "US Air Force (Squadron 39)", - "countries": [ - "USA" - ] - }, - "iiaf bare metall": { - "name": "IIAF Bare Metal Weathered", - "countries": [ - "IRN" - ] - }, - "us air force (green)": { - "name": "US Air Force (Green)", - "countries": [ - "USA" - ] - }, - "us air force (ex-usaf f-86a sabre)": { - "name": "US Air Force ex-USAF F-86A Sabre", - "countries": [ - "USA" - ] - }, - "default livery": { - "name": "default livery", - "countries": [ - "BRA", - "CUB", - "MYS", - "ARE", - "AUS", - "ABH", - "RUS", - "PHL", - "SPN", - "ISR", - "SUN", - "USA", - "BHR", - "MAR", - "BLR", - "HRV", - "DZA", - "OMN", - "RSO", - "SVK", - "HND", - "IRN", - "UKR", - "TUR", - "JPN", - "PRK", - "SRB", - "IDN", - "KAZ", - "BGR", - "BEL", - "INS", - "THA", - "LBY", - "AUSAF", - "VEN", - "PAK", - "JOR", - "RSA", - "FIN", - "MEX", - "KWT", - "NOR", - "IRQ", - "SYR", - "ITA", - "NZG", - "GRC", - "POL", - "NETH", - "GER", - "SUI", - "CHN", - "SAU", - "SWE", - "YEM", - "VNM", - "ROU", - "RSI", - "FRA", - "CHL", - "KOR", - "HUN", - "AUT", - "GRG", - "DEN", - "TUN", - "EGY", - "IND", - "CZE", - "ETH", - "CAN", - "SDN", - "QAT", - "UK", - "YUG" - ] - }, - "royal saudi air force": { - "name": "RSAF", - "countries": [ - "SAU" - ] - }, - "us air force": { - "name": "US Air Force", - "countries": [ - "USA" - ] - }, - "haf 342sqn": { - "name": "Hellenic Airforce 342sqn", - "countries": [ - "GRC" - ] - }, - "japan air force": { - "name": "Japan Air Force", - "countries": [ - "JPN" - ] - }, - "haf 341sqn": { - "name": "Hellenic Airforce 341sqn", - "countries": [ - "GRC" - ] - }, - "us air force (code fu-178)": { - "name": "US Air Force FU-178", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "Single engine, swept wing, 1 crew. Sabre", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "FA-18C_hornet": { - "name": "FA-18C_hornet", - "coalition": "blue", - "era": "Late Cold War", - "label": "F/A-18C", - "shortLabel": "18", - "loadouts": [ - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-84D Harpoon AShM", - "quantity": 4 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", - "name": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, AIM-7M*2, FUEL*1", - "name": "AIM-9M*2, AIM-7M*2, FUEL*1", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, AIM-7M*2, FUEL*2", - "name": "AIM-9M*2, AIM-7M*2, FUEL*2", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-115C with AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9M*2, AIM-7M*4, FUEL*3", - "name": "AIM-9M*2, AIM-7M*4, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M*2, ATFLIR, FUEL", - "name": "AIM-9M*2, ATFLIR, FUEL", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M*2, ATFLIR, FUEL*2", - "name": "AIM-9M*2, ATFLIR, FUEL*2", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x CBU-99 - 490lbs, 247 x HEAT Bomblets", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, CBU-99*4, FUEL*2", - "name": "AIM-9M*2, CBU-99*4, FUEL*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, LAU-61*4, FUEL*2", - "name": "AIM-9M*2, LAU-61*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, LAU-68*4, FUEL*2", - "name": "AIM-9M*2, LAU-68*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-20*4, FUEL*2", - "name": "AIM-9M*2, MK-20*4, FUEL*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-82*4, FUEL*2", - "name": "AIM-9M*2, MK-82*4, FUEL*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-82SE*4, FUEL*2", - "name": "AIM-9M*2, MK-82SE*4, FUEL*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-83*2, FUEL*2", - "name": "AIM-9M*2, MK-83*2, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-83*4, FUEL*2", - "name": "AIM-9M*2, MK-83*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, MK-84*2, FUEL*2", - "name": "AIM-9M*2, MK-84*2, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*2, ZUNI*4, FUEL*2", - "name": "AIM-9M*2, ZUNI*4, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M*6, AIM-7M*2, FUEL*2", - "name": "AIM-9M*6, AIM-7M*2, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-7M Sparrow Semi-Active Radar", - "quantity": 2 - }, - { - "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9M*6, AIM-7M*2, FUEL*3", - "name": "AIM-9M*6, AIM-7M*2, FUEL*3", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM Active Rdr AAM", - "quantity": 6 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*6, FUEL*2", - "name": "AIM-9X*2, AIM-120C-5*6, FUEL*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM Active Rdr AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*2, FUEL*1", - "name": "AIM-9X*2, AIM-120C-5*2, FUEL*1", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", - "quantity": 4 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, AGM-65D*4, ATFLIR, FUEL", - "name": "AIM-9X*2, AIM-120C-5*1, AGM-65D*4, ATFLIR, FUEL", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-84H SLAM-ER (Expanded Response)", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 2 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "AWW-13 DATALINK POD", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", - "name": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-31(V)4/B - JDAM, 2000lb GPS Guided Penetrator Bomb", - "quantity": 4 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", - "name": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BRU-55 with 2 x GBU-38 - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - }, - { - "name": "BRU-33 with 2 x GBU-12 - 500lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "AN/ASQ-228 ATFLIR - Targeting Pod", - "quantity": 1 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*1, GBU-38*4, GBU-12*4, ATFLIR, FUEL", - "name": "AIM-9X*2, AIM-120C-5*1, GBU-38*4, GBU-12*4, ATFLIR, FUEL", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", - "name": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "AIM-9X Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "LAU-115 with 2 x LAU-127 AIM-120C AMRAAM - Active Radar AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 3 - } - ], - "enabled": true, - "code": "AIM-9X*2, AIM-120C-5*6, FUEL*3", - "name": "AIM-9X*2, AIM-120C-5*6, FUEL*3", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "FPU-8A Fuel Tank 330 gallons", - "quantity": 1 - } - ], - "enabled": true, - "code": "Carrier Landing", - "name": "Carrier Landing", - "roles": [] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - } - ], - "filename": "fa-18c.png", - "enabled": true, - "liveries": { - "vfa-192": { - "name": "VFA-192", - "countries": [ - "USA" - ] - }, - "nsawc brown splinter": { - "name": "NSAWC brown splinter", - "countries": [ - "USA", - "AUSAF" - ] - }, - "vfa-34": { - "name": "VFA-34", - "countries": [ - "USA" - ] - }, - "vmfa-232": { - "name": "VMFA-232", - "countries": [ - "USA" - ] - }, - "vmfat-101": { - "name": "VMFAT-101", - "countries": [ - "USA" - ] - }, - "vmfa-232 high visibility": { - "name": "VMFA-232 high visibility", - "countries": [ - "USA" - ] - }, - "vmfat-101 high visibility": { - "name": "VMFAT-101 high visibility", - "countries": [ - "USA" - ] - }, - "vfa-37": { - "name": "VFA-37", - "countries": [ - "USA" - ] - }, - "fictional russia air force": { - "name": "Fictional Russia Air Force", - "countries": [ - "AUSAF", - "RUS" - ] - }, - "canada 150 demo jet": { - "name": "Canada 150 Demo Jet", - "countries": [ - "CAN" - ] - }, - "fictional uk air force": { - "name": "Fictional UK Air Force", - "countries": [ - "UK" - ] - }, - "vfa-131": { - "name": "VFA-131", - "countries": [ - "USA" - ] - }, - "vmfa-122 high visibility": { - "name": "VMFA-122 high visibility", - "countries": [ - "USA" - ] - }, - "spain 462th escuadron c.15-79": { - "name": "Spain 462th Escuadron C.15-79", - "countries": [ - "SPN" - ] - }, - "vmfat-101 high visibility 2005": { - "name": "VMFAT-101 high visibility 2005", - "countries": [ - "USA" - ] - }, - "vmfa-323": { - "name": "VMFA-323", - "countries": [ - "USA" - ] - }, - "vx-31 cona": { - "name": "VX-31 CoNA", - "countries": [ - "USA" - ] - }, - "fictional turkey 162nd sq": { - "name": "162nd Sqn Harpoon", - "countries": [ - "TUR" - ] - }, - "nawdc brown": { - "name": "NAWDC brown", - "countries": [ - "USA", - "AUSAF" - ] - }, - "spain 151th escuadron c.15-14": { - "name": "Spain 151_14 Escuadron C.15-14", - "countries": [ - "SPN" - ] - }, - "spain 151th escuadron c.15-24": { - "name": "Spain 151_24 Escuadron C.15-24", - "countries": [ - "SPN" - ] - }, - "vfa-106": { - "name": "VFA-106", - "countries": [ - "USA" - ] - }, - "spain 121th escuadron c.15-45": { - "name": "Spain 121 Escuadron C.15-45", - "countries": [ - "SPN" - ] - }, - "vfa-97": { - "name": "VFA-97", - "countries": [ - "USA" - ] - }, - "vx-9": { - "name": "VX-9", - "countries": [ - "USA" - ] - }, - "spain 111th escuadron c.15-73": { - "name": "Spain 111 Escuadron C.15-73", - "countries": [ - "SPN" - ] - }, - "switzerland": { - "name": "Switzerland", - "countries": [ - "SUI" - ] - }, - "vx-23": { - "name": "VX-23", - "countries": [ - "USA" - ] - }, - "vfa-83": { - "name": "VFA-83", - "countries": [ - "USA" - ] - }, - "australian 75th squadron": { - "name": "Australian sqn 75", - "countries": [ - "AUS" - ] - }, - "canada 425th squadron": { - "name": "Canada 425th Squadron", - "countries": [ - "CAN" - ] - }, - "spain 151th escuadron c.15-18": { - "name": "Spain 151_18 Escuadron C.15-18", - "countries": [ - "SPN" - ] - }, - "nsawc gray": { - "name": "NSAWC gray", - "countries": [ - "USA" - ] - }, - "vfa-87": { - "name": "VFA-87", - "countries": [ - "USA" - ] - }, - "nawdc blue": { - "name": "NAWDC blue", - "countries": [ - "USA", - "AUSAF" - ] - }, - "australian 77th squadron": { - "name": "Australian sqn 77", - "countries": [ - "AUS" - ] - }, - "vmfa-251 high visibility": { - "name": "VMFA-251 high visibility", - "countries": [ - "USA" - ] - }, - "vmfa-531": { - "name": "VMFA-531", - "countries": [ - "USA" - ] - }, - "viper": { - "name": "Viper", - "countries": [ - "USA" - ] - }, - "iceman": { - "name": "Iceman", - "countries": [ - "USA", - "AUSAF" - ] - }, - "spain 121th escuadron c.15-60": { - "name": "Spain 121 Escuadron C.15-60", - "countries": [ - "SPN" - ] - }, - "nsawc blue": { - "name": "NSAWC blue", - "countries": [ - "USA", - "AUSAF" - ] - }, - "blue angels jet team": { - "name": "Blue Angels Jet Team", - "countries": [ - "USA" - ] - }, - "fictional israel air force": { - "name": "Fictional Israel Air Force", - "countries": [ - "ISR" - ] - }, - "spain 462th escuadron c.15-90": { - "name": "Spain 462th Escuadron C.15-90", - "countries": [ - "SPN" - ] - }, - "vmfa-323 high visibility": { - "name": "VMFA-323_high visibility", - "countries": [ - "USA" - ] - }, - "maverick": { - "name": "Maverick", - "countries": [ - "USA" - ] - }, - "nawdc black": { - "name": "NAWDC black", - "countries": [ - "USA", - "AUSAF" - ] - }, - "kuwait 9th squadron": { - "name": "9th Squadron", - "countries": [ - "KWT" - ] - }, - "vmfa-251": { - "name": "VMFA-251", - "countries": [ - "USA" - ] - }, - "vmfa-314": { - "name": "VMFA-314", - "countries": [ - "USA" - ] - }, - "fictional ukraine air force": { - "name": "Fictional Ukraine Air Force", - "countries": [ - "UKR" - ] - }, - "canada 409th squadron": { - "name": "Canada 409th Squadron", - "countries": [ - "CAN" - ] - }, - "canada norad 60 demo jet": { - "name": "Canada NORAD 60 Demo Jet", - "countries": [ - "CAN" - ] - }, - "spain 111th escuadron c.15-88": { - "name": "Spain 111 Escuadron C.15-88", - "countries": [ - "SPN" - ] - }, - "spain 211th escuadron c.15-76": { - "name": "Spain 211th Escuadron C.15-76", - "countries": [ - "SPN" - ] - }, - "finland 31": { - "name": "Finland", - "countries": [ - "FIN" - ] - }, - "spain 151th escuadron c.15-23": { - "name": "Spain 151_23 Escuadron C.15-23", - "countries": [ - "SPN" - ] - }, - "vfa-122": { - "name": "VFA-122", - "countries": [ - "USA" - ] - }, - "spain 151th escuadron c.15-14 tiger meet": { - "name": "Spain 151th Escuadron C.15-14 Tiger Meet", - "countries": [ - "SPN" - ] - }, - "vfc-12": { - "name": "VFC-12", - "countries": [ - "USA", - "AUSAF" - ] - }, - "spain 211th escuadron c.15-77": { - "name": "Spain 211th Escuadron C.15-77", - "countries": [ - "SPN" - ] - }, - "spain 121th escuadron c.15-34 50th anniversary": { - "name": "Spain 121th Escuadron C.15-34 34th Anniversary", - "countries": [ - "SPN" - ] - }, - "default livery": { - "name": "default livery", - "countries": [ - "BRA", - "CUB", - "MYS", - "ARE", - "AUS", - "ABH", - "RUS", - "PHL", - "SPN", - "ISR", - "SUN", - "USA", - "BHR", - "MAR", - "BLR", - "HRV", - "DZA", - "OMN", - "RSO", - "SVK", - "HND", - "IRN", - "UKR", - "TUR", - "JPN", - "PRK", - "SRB", - "IDN", - "KAZ", - "BGR", - "BEL", - "INS", - "THA", - "LBY", - "AUSAF", - "VEN", - "PAK", - "JOR", - "RSA", - "FIN", - "MEX", - "KWT", - "NOR", - "IRQ", - "SYR", - "ITA", - "NZG", - "GRC", - "POL", - "NETH", - "GER", - "SUI", - "CHN", - "SAU", - "SWE", - "YEM", - "VNM", - "ROU", - "RSI", - "FRA", - "CHL", - "KOR", - "HUN", - "AUT", - "GRG", - "DEN", - "TUN", - "EGY", - "IND", - "CZE", - "ETH", - "CAN", - "SDN", - "QAT", - "UK", - "YUG" - ] - }, - "spain 121th escuadron c.15-50": { - "name": "Spain 121 Escuadron C.15-50", - "countries": [ - "SPN" - ] - }, - "vfa-113": { - "name": "VFA-113", - "countries": [ - "USA" - ] - }, - "vmfa-312": { - "name": "VMFA-312", - "countries": [ - "USA" - ] - }, - "kuwait 25th squadron": { - "name": "9th Squadron", - "countries": [ - "KWT" - ] - }, - "vmfa-312 high visibility": { - "name": "VMFA-312 high visibility", - "countries": [ - "USA" - ] - }, - "vmfa-122": { - "name": "VMFA-122", - "countries": [ - "USA" - ] - }, - "vfa-106 high visibility": { - "name": "VFA-106 high visibility", - "countries": [ - "USA" - ] - }, - "finland 21": { - "name": "Finland", - "countries": [ - "FIN" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 1 crew, fighter and strike. Hornet", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "FW-190A8": { - "name": "FW-190A8", - "coalition": "red", - "label": "FW-190A8 Würger", - "era": "WW2", - "shortLabel": "190", - "loadouts": [ - { - "items": [ - { - "name": "AB 250-2 - 17 x SD-10A, 250kg CBU with 10kg Frag/HE submunitions", - "quantity": 1 - } - ], - "enabled": true, - "code": "AB 250 (w/ SD 10A)", - "name": "AB 250 (w/ SD 10A)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AB 250-2 - 144 x SD-2, 250kg CBU with HE submunitions", - "quantity": 1 - } - ], - "enabled": true, - "code": "AB 250 (w/ SD 2)", - "name": "AB 250 (w/ SD 2)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AB 500-1 - 34 x SD-10A, 500kg CBU with 10kg Frag/HE submunitions", - "quantity": 1 - } - ], - "enabled": true, - "code": "AB 500 (w/ SD 10A)", - "name": "AB 500 (w/ SD 10A)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", - "quantity": 2 - } - ], - "enabled": true, - "code": "BR 21", - "name": "BR 21", - "roles": [] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "300 liter Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank 300 liters", - "name": "Fuel Tank 300 liters", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 250 Type 3 J - 250kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 250 J", - "name": "SC 250 J", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 250 Type 1 L2 - 250kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 250 L2", - "name": "SC 250 L2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "4 x SC 50 - 50kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 50 * 4", - "name": "SC 50 * 4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 500 J - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 500 J", - "name": "SC 500 J", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SC 500 L2 - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC 500 L2", - "name": "SC 500 L2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SD 250 Stg - 250kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SD 250 Stg", - "name": "SD 250 Stg", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "SD 500 A - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SD 500 A", - "name": "SD 500 A", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "", - "quantity": 1 - } - ], - "enabled": true, - "code": "Without pylon", - "name": "Without pylon", - "roles": [] - } - ], - "filename": "fw190.png", - "enabled": true, - "liveries": { - "fw190_fuselage_d_jg301": { - "name": "JG 301", - "countries": [ - "GER", - "NZG" - ] - }, - "captured_ra": { - "name": "Captured_RA", - "countries": [ - "SUN" - ] - }, - "fictional ijn carrier akagi ai-103": { - "name": "Fictional IJN Carrier Akagi AI-103", - "countries": [ - "JPN" - ] - }, - "fictional ijn otu tsukuba tsu-102": { - "name": "Fictional IJN OTU Tsukuba Tsu-102", - "countries": [ - "JPN" - ] - }, - "fw-190a8 yellow 4": { - "name": "FW190A8 Yellow 4", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8 rhaf": { - "name": "Fw 190 A8 RHAF", - "countries": [ - "HUN" - ] - }, - "jg3 white nose wulf": { - "name": "Fw190A8 'White nose Wulf'", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8_2.jg 54": { - "name": "2.JG 54", - "countries": [ - "GER", - "NZG" - ] - }, - "fictional ijn carrier soryu bi-112": { - "name": "Fictional IJN Carrier Soryu BI-112", - "countries": [ - "JPN" - ] - }, - "black 13 schwarze katze from jg1": { - "name": "Fw190_JG1_Gen._'Schwarze Katze'_Win.", - "countries": [ - "GER", - "NZG" - ] - }, - "turkish air force, 5th fr (1942)": { - "name": "Turkish Air Force, 5th FR (1942)", - "countries": [ - "AUSAF", - "TUR" - ] - }, - "fw-190a8 jg26 priller": { - "name": "Fw 190 A8 JG26 Priller", - "countries": [ - "GER", - "HUN", - "NZG" - ] - }, - "inspired by jg2 skin of early fw 190a": { - "name": "Fw190A8 JG2 Generic", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8": { - "name": "FW190A8", - "countries": "All" - }, - "fw190_alfred_bindseil": { - "name": "6.JG 1_Alfred Bindseil", - "countries": [ - "GER", - "NZG" - ] - }, - "fictional ijn 256th kokutai rai-153": { - "name": "Fictional IJN 256th Kokutai Rai-153", - "countries": [ - "JPN" - ] - }, - "fictional ijn carrier akagi ai-151": { - "name": "Fictional IJN Carrier Akagi AI-151", - "countries": [ - "JPN" - ] - }, - "fw-190a8_raf": { - "name": "FW190A8/R-2 PE882, No. 1426 Flight RAF - Late", - "countries": [ - "UK" - ] - }, - "factory skin": { - "name": "FW190A8 Luftwaffe", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8_2.jg 54_hans dortenmann": { - "name": "2.JG 54_Hans Dortenmann", - "countries": [ - "GER", - "NZG" - ] - }, - "fw 190 a-8 czech avia s.90": { - "name": "Fw 190 A-8 Czech Avia S.90", - "countries": [ - "CZE" - ] - }, - "fw190_ewald_preisz": { - "name": "6.JG 300_Ewald Preisz", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190a8 jg3 maximowitz": { - "name": "Fw 190 A8 JG3 Maximowitz", - "countries": [ - "GER", - "HUN", - "NZG" - ] - }, - "roaf-grupul7": { - "name": "RoAF-Grupul7", - "countries": [ - "ROU" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Würger ", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "FW-190D9": { - "name": "FW-190D9", - "coalition": "red", - "label": "FW-190D9 Dora", - "era": "WW2", - "shortLabel": "190", - "loadouts": [ - { - "items": [ - { - "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", - "quantity": 2 - } - ], - "enabled": true, - "code": "BR 21", - "name": "BR 21", - "roles": [ - "CAP", - "CAP", - "Strike", - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "300 liter Fuel Tank Type E2", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank", - "name": "Fuel Tank", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "13 R4M 3.2kg UnGd air-to-air rocket", - "quantity": 2 - } - ], - "enabled": true, - "code": "R4M", - "name": "R4M", - "roles": [ - "CAP", - "CAP", - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "SC 500 J - 500kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "SC500", - "name": "SC500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - } - ], - "filename": "fw190.png", - "enabled": true, - "liveries": { - "fw-190d9_5jg301": { - "name": "FW-190_5JG301.1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_iv.jg 26_hans dortenmann": { - "name": " Oblt. Hans Dortenmann, IV./JG 26, 1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_red": { - "name": "FW_190D9_Red.1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_13.jg 51_heinz marquardt": { - "name": " Heinz-Marquardt, 13./JG 51, 1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_jg54": { - "name": "FW-190D9_JG54.1945", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_black 4 of stab iijg 6": { - "name": "FW-190D9_Black <4 of Stab II/JG 6", - "countries": [ - "GER", - "NZG" - ] - }, - "fw-190d9_usa": { - "name": "FW-190_USA_Standard.1943", - "countries": [ - "USA" - ] - }, - "fw-190d9_gb": { - "name": "FW-190_GB_Standart.1943", - "countries": [ - "UK" - ] - }, - "fw-190d9_ussr": { - "name": "FW-190 WNr 210251 USSR (Captured. 1943)", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Dora", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "H-6J": { - "name": "H-6J", - "coalition": "red", - "label": "H-6 J Badger", - "era": "Mid Cold War", - "shortLabel": "H6", - "loadouts": [ - { - "items": [ - { - "name": "12 x 250-2 - 250kg GP Bombs HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "250-2 HD Bomb x 12 in Bay", - "name": "250-2 HD Bomb x 12 in Bay", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "24 x 250-2 - 250kg GP Bombs HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "250-2 HD Bomb x 24 in Bay", - "name": "250-2 HD Bomb x 24 in Bay", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MER6 - 6 x 250-3 - 250kg GP Bombs LD", - "quantity": 6 - } - ], - "enabled": true, - "code": "250-3 LD Bomb x 36", - "name": "250-3 LD Bomb x 36", - "roles": [ - "Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "KD-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "KD-20 x 4", - "name": "KD-20 x 4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "KD-20", - "quantity": 6 - } - ], - "enabled": true, - "code": "KD-20 x 6", - "name": "KD-20 x 6", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "KD-63", - "quantity": 2 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - }, - { - "name": "KD-20", - "quantity": 2 - } - ], - "enabled": true, - "code": "KD-63 x 2, KD-20 x 2", - "name": "KD-63 x 2, KD-20 x 2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "KD-63", - "quantity": 2 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - }, - { - "name": "KD-20", - "quantity": 4 - } - ], - "enabled": true, - "code": "KD-63 x 2, KD-20 x 4", - "name": "KD-63 x 2, KD-20 x 4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "KD-63", - "quantity": 4 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "KD-63 x 4", - "name": "KD-63 x 4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "YJ-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "YJ-12 x 2", - "name": "YJ-12 x 2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "YJ-12", - "quantity": 4 - } - ], - "enabled": true, - "code": "YJ-12 x 4", - "name": "YJ-12 x 4", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "YJ-83K", - "quantity": 6 - } - ], - "enabled": true, - "code": "YJ-83K x 6", - "name": "YJ-83K x 6", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "h-6.png", - "enabled": true, - "liveries": { - "planaf standard": { - "name": "PLANAF Standard", - "countries": [ - "CHN" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 4 crew bomber. Badger", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "I-16": { - "name": "I-16", - "coalition": "red", - "label": "I-16", - "era": "WW2", - "shortLabel": "I16", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "RS-82", - "quantity": 6 - } - ], - "enabled": true, - "code": "6xRS-82", - "name": "6xRS-82", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100SV", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xFAB-100", - "name": "2xFAB-100", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "RS-82", - "quantity": 6 - }, - { - "name": "FAB-100SV", - "quantity": 2 - } - ], - "enabled": true, - "code": "6xRS-82, 2xFAB-100", - "name": "6xRS-82, 2xFAB-100", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "RS-82", - "quantity": 6 - }, - { - "name": "I-16 External Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "6xRS-82, 2xDropTank-93L", - "name": "6xRS-82, 2xDropTank-93L", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "I-16 External Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "2xDropTank-93L", - "name": "2xDropTank-93L", - "roles": [ - "CAP", - "Reconnaissance", - "Escort" - ] - } - ], - "filename": "i-16.png", - "enabled": true, - "liveries": { - "silver-black demo": { - "name": "Silver-black paint scheme", - "countries": [ - "SUN", - "RUS" - ] - }, - "red army camo": { - "name": "Red Army Air Force Camouflage", - "countries": [ - "SUN", - "RUS" - ] - }, - "spain nationalists": { - "name": "Spain (Nationalists)", - "countries": [ - "SPN", - "NZG" - ] - }, - "japan": { - "name": "Japan (Captured), Manchuria 1939", - "countries": [ - "NZG", - "JPN" - ] - }, - "finnish af": { - "name": "Finland, AFB Rompotti 1943", - "countries": [ - "FIN", - "NZG" - ] - }, - "red army standard": { - "name": "1 Red Army Air Force Standard", - "countries": [ - "SUN", - "RUS" - ] - }, - "spain republicans": { - "name": "Spain (Republicans)", - "countries": [ - "SUN", - "SPN" - ] - }, - "red five demo": { - "name": "RED FIVE Aerobatic Team", - "countries": [ - "SUN", - "RUS" - ] - }, - "clear": { - "name": "Green unmarked", - "countries": "All" - }, - "silver demo": { - "name": "Silver paint scheme", - "countries": [ - "SUN", - "RUS" - ] - }, - "red army winter": { - "name": "Red Army Air Force winter", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Ishak", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "IL-76MD": { - "name": "IL-76MD", - "coalition": "red", - "label": "IL-76MD Candid", - "era": "Mid Cold War", - "shortLabel": "76", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Transport" - ] - } - ], - "filename": "il-76.png", - "enabled": true, - "liveries": { - "ukrainian af aeroflot": { - "name": "Ukrainian AF aeroflot", - "countries": [ - "UKR" - ] - }, - "algerian af il-76md": { - "name": "Algerian AF IL-76MD", - "countries": [ - "DZA" - ] - }, - "china air force old": { - "name": "China Air Force Old", - "countries": [ - "CHN" - ] - }, - "ukrainian af": { - "name": "Ukrainian AF", - "countries": [ - "UKR" - ] - }, - "rf air force": { - "name": "RF Air Force", - "countries": [ - "RUS" - ] - }, - "china air force new": { - "name": "China Air Force New", - "countries": [ - "CHN" - ] - }, - "mvd aeroflot": { - "name": "MVD aeroflot", - "countries": [ - "RUS" - ] - }, - "fsb aeroflot": { - "name": "FSB aeroflot", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 5 crew. Cargo and passenger aircraft. NATO reporting name: Candid", - "abilities": "AEW", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "IL-78M": { - "name": "IL-78M", - "coalition": "red", - "label": "IL-78M Midas", - "era": "Late Cold War", - "shortLabel": "78", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Tanker" - ] - } - ], - "filename": "il-76.png", - "enabled": true, - "liveries": { - "rf air force aeroflot": { - "name": "RF Air Force aeroflot", - "countries": [ - "SUN", - "RUS" - ] - }, - "rf air force new": { - "name": "RF Air Force new", - "countries": [ - "RUS" - ] - }, - "algerian af il-78m": { - "name": "Algerian AF IL-78M", - "countries": [ - "DZA" - ] - }, - "china air force": { - "name": "China Air Force", - "countries": [ - "CHN" - ] - }, - "rf air force": { - "name": "RF Air Force", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 6 crew. Tanker aircraft. NATO reporting name: Midas", - "abilities": "Tanker, Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "J-11A": { - "name": "J-11A", - "coalition": "red", - "label": "J-11A Flaming Dragon", - "era": "Modern", - "shortLabel": "J11", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 6 - } - ], - "enabled": true, - "code": "FAB-100x36,R-73x2,ECM", - "name": "FAB-100x36,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x FAB-250", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250x8,R-73x2,ECM", - "name": "FAB-250x8,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x FAB-500", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500x8,R-73x2,ECM", - "name": "FAB-500x8,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8KOM", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-8KOMx80,FAB-250x4,R-73x2,ECM", - "name": "S-8KOMx80,FAB-250x4,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-13L - 5 S-13 OF", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-13x20,FAB-250x4,R-73x2,ECM", - "name": "S-13x20,FAB-250x4,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x S-25", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25x4,FAB-500x4,R-73x2,ECM", - "name": "S-25x4,FAB-500x4,R-73x2,ECM", - "roles": [ - "Strike", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ERx4,R-27ETx2,R-73x2,ECM", - "name": "R-27ERx4,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x6,R-73x2,ECM", - "name": "R-77x6,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ERx6,R-73x2,ECM", - "name": "R-27ERx6,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x4,R-27ETx2,R-73x2,ECM", - "name": "R-77x4,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-77x4,R-27ERx2,R-73x2,ECM", - "name": "R-77x4,R-27ERx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 6 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500ShPx6,R-73x2,ECM", - "name": "BetAB-500ShPx6,R-73x2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73x4,ECM", - "name": "R-73x4,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77x2,R-27ETx2,R-73x2,ECM", - "name": "R-77x2,R-27ETx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-77x6,R-73x4", - "name": "R-77x6,R-73x4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", - "name": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-27ETx2,R-27ERx4,R-73x2,ECM", - "name": "R-27ETx2,R-27ERx4,R-73x2,ECM", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8TsM", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-8TsMx80,FAB-250x4,R-73x2,ECM", - "name": "S-8TsMx80,FAB-250x4,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8OFP2", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-8OFP2x80,FAB-250x4,R-73x2,ECM", - "name": "S-8OFP2x80,FAB-250x4,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "FAB-250x18,R-73x2,ECM", - "name": "FAB-250x18,R-73x2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8KOM", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*S8-KOMx2, R-73x2, ECM", - "name": "2*S8-KOMx2, R-73x2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RKL609 ECM Pod (Right)", - "quantity": 1 - }, - { - "name": "RKL609 ECM Pod (Left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x B-8M1 - 20 S-8OFP2", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*S8-OFP2x2, R-73x2, ECM", - "name": "2*S8-OFP2x2, R-73x2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "2 x FAB-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250x4, 2*FAB-500x2, R-73x2", - "name": "FAB-250x4, 2*FAB-500x2, R-73x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "2 x FAB-250", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250x4, 2*FAB-250x2, R-73x2", - "name": "FAB-250x4, 2*FAB-250x2, R-73x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "RBK-250-275 - 150 x AO-1SCh, 250kg CBU HE/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", - "name": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", - "roles": [ - "CAS" - ] - } - ], - "filename": "su-27.png", - "enabled": true, - "liveries": { - "plaaf 19th ad": { - "name": "PLAAF 19th AD", - "countries": [ - "CHN" - ] - }, - "plaaf 17th ab": { - "name": "PLAAF 17th AB", - "countries": [ - "CHN" - ] - }, - "plaaf 18th ad 'thunderclap wing' (fictional)": { - "name": "PLAAF 18th AD 'Thunderclap Wing' (Fictional)", - "countries": [ - "CHN" - ] - }, - "usn aggressor vfc-13 'ferris' (fictional)": { - "name": "Aggressor VFC-13 'Ferris' (Fictional)", - "countries": [ - "AUSAF" - ] - }, - "plaaf 19th ad (reworked)": { - "name": "PLAAF 19th AD (Reworked)", - "countries": [ - "CHN" - ] - }, - "plaaf 14th ad": { - "name": "PLAAF 14th AD", - "countries": [ - "CHN" - ] - }, - "plaaf 6th ad": { - "name": "PLAAF 6th AD", - "countries": [ - "CHN" - ] - }, - "plaaf 14th ad (reworked)": { - "name": "PLAAF 14th AD (Reworked)", - "countries": [ - "CHN" - ] - }, - "plaaf opfor 'desert' (fictional)": { - "name": "PLAAF OPFOR 'Desert' (Fictional)", - "countries": [ - "CHN" - ] - }, - "plaaf 7th ad (reworked)": { - "name": "PLAAF 7th AD (Reworked)", - "countries": [ - "CHN" - ] - }, - "usaf 65th aggressor sqn 'desert' (fictional)": { - "name": "65th Aggressor SQN 'Desert' (Fictional)", - "countries": [ - "AUSAF" - ] - }, - "sky hunter": { - "name": "Sky Hunter", - "countries": [ - "CHN" - ] - }, - "plaaf 2nd ad (parade)": { - "name": "PLAAF 2nd AD (Parade)", - "countries": [ - "CHN" - ] - }, - "plaaf opfor 'jungle' (fictional)": { - "name": "PLAAF OPFOR 'Jungle' (Fictional) ", - "countries": [ - "CHN" - ] - }, - "plaaf 33th ad (reworked)": { - "name": "PLAAF 33th AD (Reworked)", - "countries": [ - "CHN" - ] - }, - "plaaf 33th ad": { - "name": "PLAAF 33th AD", - "countries": [ - "CHN" - ] - }, - "usaf 65th aggressor sqn 'gray' (fictional)": { - "name": "65th Aggressor SQN 'Gray' (Fictional)", - "countries": [ - "AUSAF" - ] - }, - "plaaf 2nd ad": { - "name": "PLAAF 2nd AD", - "countries": [ - "CHN" - ] - }, - "plaaf 7th ad": { - "name": "PLAAF 7th AD", - "countries": [ - "CHN" - ] - }, - "plaaf ghost gray (fictional)": { - "name": "PLAAF Ghost Gray (Fictional)", - "countries": [ - "CHN" - ] - }, - "plaaf 2nd ad (reworked)": { - "name": "PLAAF 2nd AD (Reworked)", - "countries": [ - "CHN" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 1 crew, fighter and strike. NATO reporting name: Flanker", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "JF-17": { - "name": "JF-17", - "coalition": "red", - "label": "JF-17 Thunder", - "era": "Modern", - "shortLabel": "J17", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "C802AK (DIS)", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C802AKx2, 800L Tank", - "name": "PL-5Ex2, C802AKx2, 800L Tank", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 800L Tank, WMD7", - "name": "PL-5Ex2, 800L Tank, WMD7", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GBU-10", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-10x2, WMD7", - "name": "PL-5Ex2, GBU-10x2, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", - "name": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 1100L Tankx2, 800L Tank", - "name": "PL-5Ex2, 1100L Tankx2, 800L Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "CM802AKG (DIS)", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", - "name": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", - "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GBU-16", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, GBU-16x2, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, GBU-16x2, WMD7", - "roles": [ - "CAS", - "Strike", - "FAC-A" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, 1100L Tankx2, WMD7", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", - "name": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LS-6-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10x2, 1100L Tankx2, SPJ", - "name": "PL-5Ex2, 2*LD-10x2, 1100L Tankx2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", - "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "LS-6-500", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10x2, LS-6x2, SPJ", - "name": "PL-5Ex2, 2*LD-10x2, LS-6x2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "GB-6-HE", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", - "name": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", - "name": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 1100L Tank, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, 800L Tank, WMD7", - "name": "PL-5Ex2, C-701 CCDx2, 800L Tank, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 1 - }, - { - "name": "C-701T", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "LS-6-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", - "name": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 1 - }, - { - "name": "C-701T", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "GB-6-HE", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IR/CCD, GB-6-HEx2, 800L Tank", - "name": "PL-5Ex2, C-701 IR/CCD, GB-6-HEx2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701IR", - "quantity": 1 - }, - { - "name": "C-701T", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "GB-6-SFW", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 IR/CCD, GB-6-SFWx2, 800L Tank", - "name": "PL-5Ex2, C-701 IR/CCD, GB-6-SFWx2, 800L Tank", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GB-6-SFW", - "quantity": 2 - }, - { - "name": "BRM-1_90MM", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, BRM1", - "name": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, BRM1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GB-6-SFW", - "quantity": 2 - }, - { - "name": "GBU-12", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, GBU-12", - "name": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, GBU-12", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 3 - }, - { - "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", - "name": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "PL-5Ex2, Mk-84x3", - "name": "PL-5Ex2, Mk-84x3", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GDJ-II19 - 2 x LAU68 MK5", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk5x2, 800L Tank", - "name": "PL-5Ex2, 2*Mk5x2, 800L Tank", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "UG_90MM", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, Unguided 90mmx2, 800L Tank", - "name": "PL-5Ex2, Unguided 90mmx2, 800L Tank", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 3 - }, - { - "name": "GDJ-II19 - 2 x LAU68 MK5", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Mk5x2, Mk-83x3", - "name": "PL-5Ex2, 2*Mk5x2, Mk-83x3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "BRM-1_90MM", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", - "name": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2x1100L Tank", - "name": "PL-5Ex2, 2x1100L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 2x1100L Tank", - "name": "PL-5Ex2, SD-10x2, 2x1100L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 800L Tank", - "name": "PL-5Ex2, 800L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 800L Tank", - "name": "PL-5Ex2, SD-10x2, 800L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 800L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 800L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, SPJ", - "name": "PL-5Ex2, SD-10x2, SPJ", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, SPJ", - "name": "PL-5Ex2, SPJ", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, SPJ", - "name": "PL-5Ex2, 2*SD-10x2, SPJ", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2", - "name": "PL-5Ex2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2", - "name": "PL-5Ex2, SD-10x2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10", - "name": "PL-5Ex2, 2*SD-10", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", - "name": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10 x 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", - "name": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "SD-10", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", - "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", - "roles": [ - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "BRM-1_90MM", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GBU-16", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", - "name": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", - "roles": [ - "FAC-A", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "PL-5EII", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, WMD7", - "name": "PL-5Ex2, WMD7", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 1 - }, - { - "name": "GB-6", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", - "name": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "C-701T", - "quantity": 2 - }, - { - "name": "KG-600", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, C-701 CCDx2, SPJ", - "name": "PL-5Ex2, C-701 CCDx2, SPJ", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LD-10 x 2", - "quantity": 1 - }, - { - "name": "SD-10 x 2", - "quantity": 1 - }, - { - "name": "CM802AKG (DIS)", - "quantity": 2 - }, - { - "name": "DATA-LINK POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", - "name": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x Mk-82", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", - "name": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "LS-6-500", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GB-6", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", - "name": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "LS-6-500", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "GDJ-II19 - 2 x GBU-12", - "quantity": 2 - }, - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "GB-6", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", - "name": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", - "roles": [] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "TYPE-200A Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*Type-200Ax2", - "name": "PL-5Ex2, 2*Type-200Ax2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "TYPE-200A", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, Type-200Ax2", - "name": "PL-5Ex2, Type-200Ax2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "LS-6-250 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "800L Tank", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LS-6-250 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", - "name": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "1100L Tank", - "quantity": 2 - }, - { - "name": "LS-6-100 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PL-5EII", - "quantity": 2 - }, - { - "name": "WMD7 POD", - "quantity": 1 - }, - { - "name": "800L Tank", - "quantity": 2 - }, - { - "name": "LS-6-100 Dual", - "quantity": 2 - } - ], - "enabled": true, - "code": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", - "name": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", - "roles": [ - "CAS" - ] - } - ], - "filename": "jf-17.png", - "enabled": true, - "liveries": { - "paf black panthers 07-101": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers 07-101", - "countries": [ - "PAK" - ] - }, - "paf phoenixes": { - "name": "Pakistan Air Force No.28 Sqn Phoenixes", - "countries": [ - "PAK" - ] - }, - "paf black spiders 07-101 (fictional)": { - "name": "Pakistan Air Force No.26 Sqn Black Spiders 07-101 (Fictional)", - "countries": [ - "PAK" - ] - }, - "paf 07-101 (overhauled)": { - "name": "Pakistan Air Force 07-101 (Overhauled)", - "countries": [ - "PAK" - ] - }, - "paf black panthers (b2v2)": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers (Block2 Camo2)", - "countries": [ - "PAK" - ] - }, - "plaaf 125th ab (fictional)": { - "name": "PLAAF 125th AB (Fictional)", - "countries": [ - "CHN" - ] - }, - "naf 722": { - "name": "Nigerian Air Force 722", - "countries": [ - "NGA" - ] - }, - "paf dark camo": { - "name": "Pakistan Air Force Dark Camo", - "countries": [ - "PAK" - ] - }, - "'splinter' camo for blue side (fictional)": { - "name": "\"Splinter\" Camo for Blue Side (Fictional)", - "countries": "All" - }, - "paf black spiders (web camo)": { - "name": "Pakistan Air Force No.26 Sqn Black Spiders (Web Camo)", - "countries": [ - "PAK" - ] - }, - "plaaf 111th ab (fictional)": { - "name": "PLAAF 111th AB (Fictional)", - "countries": [ - "CHN" - ] - }, - "paf black panthers": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers", - "countries": [ - "PAK" - ] - }, - "paf black spiders (default)": { - "name": "Pakistan Air Force No.26 Sqn Black Spiders", - "countries": [ - "PAK" - ] - }, - "paf ccs fierce fragons": { - "name": "Pakistan Air Force CCS Sqn Fierce Dragons", - "countries": [ - "PAK" - ] - }, - "plaaf ghost gray camo (fictional)": { - "name": "PLAAF \"Ghost Gray\" Camo (Fictional)", - "countries": [ - "CHN" - ] - }, - "'chips' camo for blue side (fictional)": { - "name": "USAF \"Chips\" Camo (Fictional)", - "countries": [ - "USA" - ] - }, - "paf black panthers (reworked)": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers (Reworked)", - "countries": [ - "PAK" - ] - }, - "maf blue sea camo": { - "name": "Myanmar Air Force Blue Sea Camo", - "countries": "All" - }, - "proto 06": { - "name": "FC-1 Prototype 06", - "countries": [ - "CHN" - ] - }, - "paf minhasians": { - "name": "Pakistan Air Force No.2 Sqn Minhasians", - "countries": [ - "PAK" - ] - }, - "paf sharp shooters": { - "name": "Pakistan Air Force No.18 Sqn Sharp Shooters", - "countries": [ - "PAK" - ] - }, - "paf tail choppers": { - "name": "Pakistan Air Force No.14 Sqn Tail Choppers", - "countries": [ - "PAK" - ] - }, - "paf black panthers (b2v1)": { - "name": "Pakistan Air Force No.16 Sqn Black Panthers (Block2 Camo1)", - "countries": [ - "PAK" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew, fighter and strike. Geoff", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "KC-135": { - "name": "KC-135", - "coalition": "blue", - "label": "KC-135 Stratotanker", - "era": "Early Cold War", - "shortLabel": "135", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Tanker" - ] - } - ], - "filename": "kc-135.png", - "enabled": true, - "liveries": { - "standard usaf": { - "name": "USAF Standard", - "countries": [ - "USA" - ] - }, - "turaf standard": { - "name": "Turkish Air Force", - "countries": [ - "TUR" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 3 crew. Tanker aircraft. Stratotanker", - "abilities": "Tanker, Boom AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "KC135MPRS": { - "name": "KC135MPRS", - "coalition": "blue", - "label": "KC-135 MPRS Stratotanker", - "era": "Early Cold War", - "shortLabel": "135M", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Tanker" - ] - } - ], - "filename": "kc-135.png", - "enabled": true, - "liveries": { - "100th arw": { - "name": "100th ARW", - "countries": [ - "USA" - ] - }, - "22nd arw": { - "name": "22nd ARW", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swept wing, 3 crew. Tanker aircraft. Stratotanker", - "abilities": "Tanker, Drogue AAR, MPRS", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "L-39ZA": { - "name": "L-39ZA", - "coalition": "red", - "label": "L-39ZA", - "era": "Mid Cold War", - "shortLabel": "L39", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2", - "name": "FAB-100x2", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel Tank 150 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2, PTB-150x2", - "name": "FAB-100x2, PTB-150x2", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel Tank 350 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100x2, PTB-350x2", - "name": "FAB-100x2, PTB-350x2", - "roles": [ - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "FAB-100x4", - "name": "FAB-100x4", - "roles": [ - "Antiship Strike", - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", - "quantity": 2 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "OFAB-100 Jupiter x4, FAB-100x2", - "name": "OFAB-100 Jupiter x4, FAB-100x2", - "roles": [ - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", - "quantity": 4 - } - ], - "enabled": true, - "code": "OFAB-100 Jupiter x8", - "name": "OFAB-100 Jupiter x8", - "roles": [ - "CAS", - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - }, - { - "name": "Fuel Tank 150 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "PK-3x2, PTB-150x2", - "name": "PK-3x2, PTB-150x2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 4 - } - ], - "enabled": true, - "code": "PK-3x4", - "name": "PK-3x4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-3Sx2", - "name": "R-3Sx2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-3Sx2, PK-3x2", - "name": "R-3Sx2, PK-3x2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60Mx2", - "name": "R-60Mx2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "PK-3 - 7.62mm GPMG", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60Mx2, PK-3x2", - "name": "R-60Mx2, PK-3x2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32", - "name": "S-5KOx32", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32, FAB-100x2", - "name": "S-5KOx32, FAB-100x2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel Tank 150 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32, PTB-150x2", - "name": "S-5KOx32, PTB-150x2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel Tank 350 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-5KOx32, PTB-350x2", - "name": "S-5KOx32, PTB-350x2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-5KOx64", - "name": "S-5KOx64", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "SAB-100x4", - "name": "SAB-100x4", - "roles": [ - "FAC-A" - ] - } - ], - "filename": "l-39.png", - "enabled": true, - "liveries": { - "splinter camo woodland": { - "name": "Splinter camo woodland", - "countries": "All" - }, - "algerian af tiger nl-36": { - "name": "Algerian AF Tiger NL-36", - "countries": [ - "DZA" - ] - }, - "czech air force": { - "name": "Czech Air Force", - "countries": [ - "CZE" - ] - }, - "algerian af nl-44": { - "name": "Algerian AF NL-44", - "countries": [ - "DZA" - ] - }, - "splinter camo desert": { - "name": "Splinter camo desert", - "countries": "All" - }, - "slovak air force": { - "name": "2nd SQN AFB Sliac", - "countries": [ - "SVK" - ] - }, - "russian air force": { - "name": "1 Russian Air Force", - "countries": [ - "RUS" - ] - }, - "czechoslovakia air force": { - "name": "Czechoslovakia_Air Force", - "countries": [ - "CZE" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "M-2000C": { - "name": "M-2000C", - "coalition": "blue", - "label": "M-2000C Mirage", - "era": "Late Cold War", - "shortLabel": "2k", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox", - "name": "Fox", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / Magic (QRA)", - "name": "Fox / Magic (QRA)", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Super 530D", - "quantity": 2 - } - ], - "enabled": true, - "code": "Alpha / S530D", - "name": "Alpha / S530D", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "Matra Super 530D", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / S530D / Magic", - "name": "Fox / S530D / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "Matra Super 530D", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - }, - { - "name": "Eclair 16 flares 16 chaffs", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / S530D / Magic / Eclair", - "name": "Fox / S530D / Magic / Eclair", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bravo", - "name": "Bravo", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - } - ], - "enabled": true, - "code": "Bravo / Magic", - "name": "Bravo / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kilo", - "name": "Kilo", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kilo / Magic", - "name": "Kilo / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Bravo / 4xMk-82 / Magic", - "name": "Bravo / 4xMk-82 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / GBU-12 / Magic", - "name": "Bravo / GBU-12 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "AUF2 GBU-12 x 2", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / 2xGBU-12 / Magic", - "name": "Bravo / 2xGBU-12 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / GBU-16 / Magic", - "name": "Bravo / GBU-16 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "GBU-24 Paveway III - 2000lb Laser Guided Bomb", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / GBU-24 / Magic", - "name": "Bravo / GBU-24 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "BAP-100 x 18", - "quantity": 1 - } - ], - "enabled": true, - "code": "Bravo / BAP-100 / Magic", - "name": "Bravo / BAP-100 / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Bravo / 4xSnakeEye / Magic", - "name": "Bravo / 4xSnakeEye / Magic", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fox / 4xMk-82 / Magic", - "name": "Fox / 4xMk-82 / Magic", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Matra Magic II", - "quantity": 2 - }, - { - "name": "RPL 541 2000 liters Fuel Tank ", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - }, - { - "name": "RPL 522 1300 liters Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kilo / 4xMk-82 / Magic", - "name": "Kilo / 4xMk-82 / Magic", - "roles": [ - "Strike" - ] - } - ], - "filename": "m2000.png", - "enabled": true, - "liveries": { - "ada alsace lf-2": { - "name": "Ada Alsace LF-2", - "countries": [ - "FRA" - ] - }, - "peru052": { - "name": "Fuerza Aerea Peruana 052", - "countries": [ - "FRA", - "PER" - ] - }, - "mission accomplie": { - "name": "2022 MISSION ACCOMPLIE by MALBAK", - "countries": "All" - }, - "cambresis": { - "name": "AdA Cambresis", - "countries": [ - "FRA" - ] - }, - "greek air force": { - "name": "Polemikh Aeroporia (Greek Air Force)", - "countries": [ - "FRA", - "GRC" - ] - }, - "brasilian air force": { - "name": "Forca Aerea Brasileira (Brazilian Air Force)", - "countries": [ - "BRA", - "FRA" - ] - }, - "2003 tigermeet": { - "name": "NATO Tigermeet 2003", - "countries": [ - "FRA" - ] - }, - "peru064": { - "name": "Fuerza Aerea Peruana 064", - "countries": [ - "FRA", - "PER" - ] - }, - "2010 tigermeet": { - "name": "NATO Tigermeet 2010", - "countries": [ - "FRA" - ] - }, - "uae air force": { - "name": "UAE Air Defense Air Force", - "countries": [ - "FRA", - "ARE" - ] - }, - "2004 tigermeet": { - "name": "NATO Tigermeet 2004", - "countries": [ - "FRA" - ] - }, - "ada chasse 2-5": { - "name": "AdA Chasse 2/5", - "countries": [ - "FRA" - ] - }, - "iaf silver 59": { - "name": "Israeli Air Force 101 Sqn 1967 scheme", - "countries": [ - "ABH", - "RUS", - "SPN", - "ISR", - "USA", - "RSO", - "UKR", - "TUR", - "BEL", - "NOR", - "ITA", - "POL", - "NETH", - "GER", - "FRA", - "GRG", - "DEN", - "CZE", - "CAN", - "UK" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew, fighter and strike.", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MB-339A": { - "name": "MB-339A", - "coalition": "blue", - "label": "MB-339A", - "era": "Mid Cold War", - "shortLabel": "339", - "loadouts": [ - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "", - "quantity": 6 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks [Clean]", - "name": "A - 2*320L TipTanks [Clean]", - "roles": [ - "Transport" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "", - "quantity": 3 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", - "name": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", - "roles": [ - "Transport" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 HEI Heavy", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", - "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", - "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Mk-83 - 1000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Mk-81 - 250lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.83 + 2*Mk.81 ", - "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.83 + 2*Mk.81 ", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 6 - } - ], - "enabled": true, - "code": "A - 2*320L TipTanks + 6*Mk.82LD", - "name": "A - 2*320L TipTanks + 6*Mk.82LD", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "", - "quantity": 3 - }, - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "Luggage Container", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", - "name": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", - "roles": [ - "No task", - "Transport" - ] - }, - { - "items": [ - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "Matra Type 155 Rocket Pod", - "quantity": 2 - }, - { - "name": "BLG-66-AC Belouga", - "quantity": 2 - }, - { - "name": "AN/M3 Gunpod Right", - "quantity": 1 - }, - { - "name": "AN/M3 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", - "name": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", - "name": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", - "roles": [] - }, - { - "items": [ - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", - "quantity": 2 - }, - { - "name": "Mk-82 Snakeye - 500lb GP Bomb HD", - "quantity": 4 - } - ], - "enabled": true, - "code": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", - "name": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "AA - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*LAU-10(Zuni Rockets) [ARMADA]", - "name": "AA - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*LAU-10(Zuni Rockets) [ARMADA]", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", - "quantity": 2 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "AN/M3 Gunpod Right", - "quantity": 1 - }, - { - "name": "AN/M3 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "AM - 2*320L TipTanks + 2*AN/M3 GunPods + 2*330L Tanks + 2*LAU-3 (Hydra rockets)", - "name": "AM - 2*320L TipTanks + 2*AN/M3 GunPods + 2*330L Tanks + 2*LAU-3 (Hydra rockets)", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "14-3-M2 - 6 x BAT-120 ABL - 34kg HE/Frag Chute Retarded Bomb HD", - "quantity": 6 - } - ], - "enabled": true, - "code": "Anti - Light Armoured Vehicle (36*BAT-120 ABL)", - "name": "Anti - Light Armoured Vehicle (36*BAT-120 ABL)", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "Matra Type 155 Rocket Pod", - "quantity": 2 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "AP - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*330L Tanks + 2*Matra 155 (SNEB rockets)", - "name": "AP - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*330L Tanks + 2*Matra 155 (SNEB rockets)", - "roles": [ - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "AN/M3 Gunpod Right", - "quantity": 1 - }, - { - "name": "Photo-Recon Pod (4*70mm Vinten Cameras)", - "quantity": 1 - }, - { - "name": "Fuel Tank 330lt", - "quantity": 2 - }, - { - "name": "", - "quantity": 2 - } - ], - "enabled": true, - "code": "Recon", - "name": "Recon", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 4 - }, - { - "name": "Matra Type 155 Rocket Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "Runway Interdiction", - "name": "Runway Interdiction", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Elliptic Tip Tank 320lt", - "quantity": 2 - }, - { - "name": "14-3-M2 - 6 x BAP-100 - 32kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 6 - } - ], - "enabled": true, - "code": "Runway Interdiction (36*BAP-100)", - "name": "Runway Interdiction (36*BAP-100)", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Cylindrical Tip Tank 500lt", - "quantity": 2 - }, - { - "name": "BRD-4-250 - 4 x Mk 76 - 25lb Practice Bomb LD", - "quantity": 1 - }, - { - "name": "", - "quantity": 2 - }, - { - "name": "DEFA553 Gunpod Right", - "quantity": 1 - }, - { - "name": "DEFA553 Gunpod Left", - "quantity": 1 - } - ], - "enabled": true, - "code": "Training", - "name": "Training", - "roles": [] - } - ], - "filename": "mb-339.png", - "enabled": true, - "liveries": { - "mb339an 'nigeria'": { - "name": "Nigerian Air Force | Camo (Low-Vis)", - "countries": [ - "NGA" - ] - }, - "mb339a italian camo - late": { - "name": "Italian Camo - Late", - "countries": [ - "ITA" - ] - }, - "mb339a italian factory": { - "name": "Italian Orange/White", - "countries": [ - "ITA" - ] - }, - "mb339am 'malaysia'": { - "name": "Royal Malaysian Air Force | Camo (Low-Vis)", - "countries": [ - "MYS" - ] - }, - "mb339aa 'armada' - yellow band": { - "name": "ARMADA Argentina | Camo (Yellow Band)", - "countries": [ - "ARG" - ] - }, - "mb339ag 'ghana'": { - "name": "Ghana Air Force | Camo (Low-Vis)", - "countries": [ - "GHA" - ] - }, - "mb339a italian gray": { - "name": "Italian Gray", - "countries": [ - "ITA" - ] - }, - "mb339a italian camo - early": { - "name": "Italian Camo - Early", - "countries": [ - "ITA" - ] - }, - "mb339 'factory'": { - "name": "Aermacchi Factory Scheme | S-001 I-NEUF", - "countries": "All" - }, - "mb339ad 'uae'": { - "name": "UAE Air Force", - "countries": [ - "ARE" - ] - }, - "mb339aa 'armada' - crippa": { - "name": "ARMADA Argentina | Camo (Lt. Crippa's killmark)", - "countries": [ - "ARG" - ] - }, - "mb339ap 'peru'": { - "name": "Peruvian Air Force | Camo (Late)", - "countries": [ - "PER" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MQ-9 Reaper": { - "name": "MQ-9 Reaper", - "coalition": "blue", - "label": "MQ-9 Reaper", - "era": "Modern", - "shortLabel": "MQ9", - "loadouts": [ - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "AGM-114K * 2", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-114K*12", - "name": "AGM-114K*12", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "M299 - 4 x AGM-114K Hellfire", - "quantity": 2 - }, - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "AGM-114K*8,GBU-38*2", - "name": "AGM-114K*8,GBU-38*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-12*4", - "name": "GBU-12*4", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "GBU-38*4", - "name": "GBU-38*4", - "roles": [ - "CAS", - "Strike" - ] - } - ], - "filename": "rq-1.png", - "enabled": true, - "liveries": { - "standard": { - "name": "standard", - "countries": [ - "USA" - ] - }, - "standard uk": { - "name": "standard UK", - "countries": [ - "UK" - ] - }, - "standard italy": { - "name": "standard Italy", - "countries": [ - "ITA" - ] - }, - "standard france": { - "name": "standard France", - "countries": [ - "FRA" - ] - }, - "'camo' scheme": { - "name": "'camo' scheme", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "Single turboprop, straight wing, attack aircraft. Reaper", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-15bis": { - "name": "MiG-15bis", - "coalition": "red", - "label": "MiG-15 Fagot", - "era": "Early Cold War", - "shortLabel": "M15", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-50 - 50kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*FAB-50", - "name": "2*FAB-50", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*FAB-100M", - "name": "2*FAB-100M", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 300 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*300L", - "name": "2*300L", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 400 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*400L", - "name": "2*400L", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 600 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "2*600L", - "name": "2*600L", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 300 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel tank 300", - "name": "Fuel tank 300", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 400 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel tank 400", - "name": "Fuel tank 400", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - } - ], - "filename": "mig-15.png", - "enabled": true, - "liveries": { - "china_air force": { - "name": "People's Liberation Army Air Force", - "countries": [ - "CHN" - ] - }, - "china volunteer air force": { - "name": "People's Volunteer Army Air Force", - "countries": [ - "CHN" - ] - }, - "ussr_red": { - "name": "USSR Red", - "countries": [ - "SUN", - "RUS" - ] - }, - "algerian af 1962": { - "name": "Algerian AF 1962", - "countries": [ - "DZA" - ] - }, - "north_korea_air force_major_ arkady_ boitsow": { - "name": "North Korea - Major Arkady Boitsow", - "countries": [ - "RUS", - "PRK" - ] - }, - "gdr_air force": { - "name": "Air Forces of the National People's Army", - "countries": [ - "GER" - ] - }, - "default livery": { - "name": "default livery", - "countries": [ - "BRA", - "CUB", - "MYS", - "ARE", - "AUS", - "ABH", - "RUS", - "PHL", - "SPN", - "ISR", - "SUN", - "USA", - "BHR", - "MAR", - "BLR", - "HRV", - "DZA", - "OMN", - "RSO", - "SVK", - "HND", - "IRN", - "UKR", - "TUR", - "JPN", - "PRK", - "SRB", - "IDN", - "KAZ", - "BGR", - "BEL", - "INS", - "THA", - "LBY", - "AUSAF", - "VEN", - "PAK", - "JOR", - "RSA", - "FIN", - "MEX", - "KWT", - "NOR", - "IRQ", - "SYR", - "ITA", - "NZG", - "GRC", - "POL", - "NETH", - "GER", - "SUI", - "CHN", - "SAU", - "SWE", - "YEM", - "VNM", - "ROU", - "RSI", - "FRA", - "CHL", - "KOR", - "HUN", - "AUT", - "GRG", - "DEN", - "TUN", - "EGY", - "IND", - "CZE", - "ETH", - "CAN", - "SDN", - "QAT", - "UK", - "YUG" - ] - }, - "haf fictional": { - "name": "Hellenic Airforce - Fictional", - "countries": [ - "GRC" - ] - }, - "ussr_air forces": { - "name": "Air Forces of Soviet Union", - "countries": [ - "SUN", - "RUS" - ] - }, - "north_korea_air force": { - "name": "Korean People's Air Force", - "countries": [ - "PRK" - ] - }, - "polish_air force": { - "name": "Polish Air Force", - "countries": [ - "POL" - ] - }, - "ussr_air forces old": { - "name": "USSR Old", - "countries": [ - "SUN", - "RUS" - ] - }, - "czechoslovakia_air force": { - "name": "Czechoslovak Air Force", - "countries": [ - "CZE" - ] - }, - "ussr_pepelyaev": { - "name": "USSR Pepelyaev", - "countries": [ - "SUN", - "RUS", - "PRK" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew. Fagot", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-19P": { - "name": "MiG-19P", - "coalition": "red", - "label": "MiG-19 Farmer", - "era": "Early Cold War", - "shortLabel": "M19", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 760 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "PTB-760 x 2", - "name": "PTB-760 x 2", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "K-13A", - "quantity": 2 - }, - { - "name": "Fuel Tank 760 liters", - "quantity": 2 - } - ], - "enabled": true, - "code": "K-13A x 2, PTB-760 x 2", - "name": "K-13A x 2, PTB-760 x 2", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "K-13A", - "quantity": 2 - } - ], - "enabled": true, - "code": "K-13A x 2", - "name": "K-13A x 2", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "K-13A", - "quantity": 2 - }, - { - "name": "Fuel Tank 760 liters", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "K-13A x 2, ORO-57K x 2, PTB-760 x 2", - "name": "K-13A x 2, ORO-57K x 2, PTB-760 x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 760 liters", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "ORO-57K x 2, PTB-760 x 2", - "name": "ORO-57K x 2, PTB-760 x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ORO-57K - S-5M x 8", - "quantity": 4 - } - ], - "enabled": true, - "code": "ORO-57K x 4", - "name": "ORO-57K x 4", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "ORO-57K x 2", - "name": "ORO-57K x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100M x 2, ORO-57K x 2", - "name": "FAB-100M x 2, ORO-57K x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "ORO-57K - S-5M x 8", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250 x 2, ORO-57K x 2", - "name": "FAB-250 x 2, ORO-57K x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-100M - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100M x 2", - "name": "FAB-100M x 2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250 x 2", - "name": "FAB-250 x 2", - "roles": [ - "CAS", - "Strike" - ] - } - ], - "filename": "mig-19.png", - "enabled": true, - "liveries": { - "ussr_2": { - "name": "764th Fighter Aviation Regiment", - "countries": [ - "SUN", - "RUS" - ] - }, - "plaaf camo": { - "name": "PLAAF Snow Camo", - "countries": [ - "CHN" - ] - }, - "cuba": { - "name": " 211 Escuadron de Caza", - "countries": [ - "CUB" - ] - }, - "iap": { - "name": "234 Fighter Regiment (234 IAP)", - "countries": "All" - }, - "ddr - fictional": { - "name": "Germany DDR camouflage (Fictional)", - "countries": "All" - }, - "snow - fictional": { - "name": "Snow Camouflage Fictional", - "countries": "All" - }, - "plaaf": { - "name": "112th Air Regiment", - "countries": [ - "CHN" - ] - }, - "romania - 66th fighter division": { - "name": "91st Fighter Regiment", - "countries": [ - "ROU" - ] - }, - "poland 39 plm": { - "name": "39 PLM Squadron", - "countries": [ - "POL" - ] - }, - "poland 62 plm": { - "name": "62 PLM Squadron", - "countries": [ - "POL" - ] - }, - "default": { - "name": "default", - "countries": "All" - }, - "czechoslovakia": { - "name": "2nd Fighter-Bomber Regiment", - "countries": [ - "CZE" - ] - }, - "bulgaria": { - "name": "1st Squadron, 18th Fighter Regiment", - "countries": [ - "BGR" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew. Farmer", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-21Bis": { - "name": "MiG-21Bis", - "coalition": "red", - "label": "MiG-21 Fishbed", - "era": "Mid Cold War", - "shortLabel": "M21", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Patrol, long range", - "name": "Patrol, long range", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-60 x 2", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Patrol, medium range", - "name": "Patrol, medium range", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-60 x 2", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Patrol, short range", - "name": "Patrol, short range", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Hard targets, BOMBS", - "name": "Hard targets, BOMBS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "UB-32M - 32 S-5M", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "Unknown or mixed targets, BOMBS + ROCKETS", - "name": "Unknown or mixed targets, BOMBS + ROCKETS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "UB-32M - 32 S-5M", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, CLUSTERS + ROCKETS", - "name": "Soft targets, CLUSTERS + ROCKETS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "BL-755 CBU - 450kg, 147 Frag/Pen bomblets", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, CLUSTERS", - "name": "Soft targets, CLUSTERS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "UPK-23-250 - gun pod", - "quantity": 2 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, scattered", - "name": "Soft targets, scattered", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Kh-66 Grom (21) - AGM, radar guided APU-68", - "quantity": 2 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Few big targets, GROM + BOMBS", - "name": "Few big targets, GROM + BOMBS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "Very hard target, PENETRATION", - "name": "Very hard target, PENETRATION", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Aerial attack, hard targets, CLUSTERS", - "name": "Aerial attack, hard targets, CLUSTERS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "S-24A (21) - 180 kg, cumulative unguided rocket", - "quantity": 4 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Hard targets, ROCKETS, PENETRATION", - "name": "Hard targets, ROCKETS, PENETRATION", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "S-24B (21) - 180 kg, fragmented unguided rocket", - "quantity": 4 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Soft targets, ROCKETS, BLAST-FRAGMENTS", - "name": "Soft targets, ROCKETS, BLAST-FRAGMENTS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, MIX", - "name": "Long range, MIX", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, RADAR GUIDED MISSILES", - "name": "Long range, RADAR GUIDED MISSILES", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 490 L Central (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, INFRA RED MISSILES", - "name": "Long range, INFRA RED MISSILES", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Escort", - "name": "Escort", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Escort, JAMMER", - "name": "Escort, JAMMER", - "roles": [ - "Escort" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "Night, ILLUMINATOR", - "name": "Night, ILLUMINATOR", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Long range, JAMMER", - "name": "Long range, JAMMER", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "UPK-23-250 - gun pod", - "quantity": 2 - }, - { - "name": "UB-16UM - 16 S-5M", - "quantity": 2 - } - ], - "enabled": true, - "code": "Soft targets, UPK + ROCKETS", - "name": "Soft targets, UPK + ROCKETS", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "UPK-23-250 - gun pod", - "quantity": 2 - }, - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Soft targets, UPK + CLUSTERS", - "name": "Soft targets, UPK + CLUSTERS", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "SPS-141-100 (21) - jamming and countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - } - ], - "enabled": true, - "code": "Patrol, JAMMER", - "name": "Patrol, JAMMER", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "RN-24 - 470kg, nuclear bomb, free fall", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - } - ], - "enabled": true, - "code": "NUCLEAR A", - "name": "NUCLEAR A", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RN-28 - 260 kg, nuclear bomb, free fall", - "quantity": 1 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - }, - { - "name": "Fuel Tank 490 L (21)", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 1 - } - ], - "enabled": true, - "code": "NUCLEAR B", - "name": "NUCLEAR B", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel Tank 800 L (21)", - "quantity": 1 - }, - { - "name": "R-3R - AAM, radar guided", - "quantity": 2 - }, - { - "name": "R-3S - AAM, IR guided", - "quantity": 2 - }, - { - "name": "ASO-2 - countermeasures pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Short range", - "name": "Short range", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Smoke - white - 21", - "quantity": 1 - } - ], - "enabled": true, - "code": "AEROBATIC", - "name": "AEROBATIC", - "roles": [] - } - ], - "filename": "mig-21.png", - "enabled": true, - "liveries": { - "afghanistan (1)": { - "name": "Afghanistan (1)", - "countries": "All" - }, - "bulgaria - 1-3 iae (3)": { - "name": "Bulgaria - 1/3 IAE (3)", - "countries": "All" - }, - "germany east - jg-8": { - "name": "East Germany - JG-8", - "countries": "All" - }, - "plaaf - white": { - "name": "PLAAF - White", - "countries": "All" - }, - "croatia - 21st fs": { - "name": "Croatia - 21st Fighter Squadron (Zagreb AB)", - "countries": "All" - }, - "plaaf - sky blue": { - "name": "PLAAF - Sky Blue", - "countries": "All" - }, - "iraq - 17th sqn (2)": { - "name": "Iraq - 17th Sqn (2)", - "countries": "All" - }, - "vvs - amt-11 grey": { - "name": "VVS - AMT-11 Grey", - "countries": "All" - }, - "vvs - 234 gviap": { - "name": "VVS - 234 GvIAP", - "countries": "All" - }, - "bare metal": { - "name": "Bare Metal", - "countries": "All" - }, - "bulgaria - 1-3 iae (2)": { - "name": "Bulgaria - 1/3 IAE (2)", - "countries": "All" - }, - "plaaf - splinter": { - "name": "PLAAF - Splinter", - "countries": "All" - }, - "argentina (2)": { - "name": "Argentina (2)", - "countries": "All" - }, - "vvs - demonstrator": { - "name": "VVS Demonstrator", - "countries": "All" - }, - "vvs - 115 gviap": { - "name": "VVS - 115 GvIAP (Kokaydy AB)", - "countries": "All" - }, - "romania - lancer a": { - "name": "Romania - Lancer A", - "countries": "All" - }, - "sweden - 16th air wing": { - "name": "Sweden - 16th Air Wing", - "countries": "All" - }, - "syria (1)": { - "name": "Syria (1)", - "countries": "All" - }, - "egypt - grey 1982": { - "name": "Egypt - Grey 1982", - "countries": "All" - }, - "finland - hävllv 31": { - "name": "Finland - HavLLv 31", - "countries": "All" - }, - "huaf 47th ab - 6115 (griff sqn)": { - "name": "HunAF Griff Sqn. (47th AB) 6115", - "countries": "All" - }, - "libya - 2017": { - "name": "Lybia - 2017", - "countries": "All" - }, - "huaf 47th ab (griff sqn)": { - "name": "HunAF Griff Sqn. (47th AB)", - "countries": "All" - }, - "cuba - 1990s": { - "name": "Cuba - 1990s", - "countries": "All" - }, - "serbia - 101st lae": { - "name": "Serbia - 101st LAE", - "countries": "All" - }, - "slovakia - 1998": { - "name": "Slovakia - 1998", - "countries": "All" - }, - "iran - 51st sqn": { - "name": "Iran - 51st Sqn (Umidiyeh AB)", - "countries": "All" - }, - "vvs - 116 cbp": { - "name": "VVS - 116 CBP", - "countries": "All" - }, - "georgia (2)": { - "name": "Georgia (2)", - "countries": "All" - }, - "huaf metal": { - "name": "HuAF Metal", - "countries": "All" - }, - "bulgaria - 1-3 iae": { - "name": "Bulgaria - 1/3 IAE", - "countries": "All" - }, - "india - 101st sqn (1)": { - "name": "India - 101st Sqn Falcons", - "countries": "All" - }, - "ukraine (2)": { - "name": "Ukraine 02", - "countries": "All" - }, - "vpaf - 927th fighter regiment metal": { - "name": "VPAF - 927th Fighter Regiment Metal", - "countries": "All" - }, - "iran - standard": { - "name": "Iran - Standard", - "countries": "All" - }, - "romania - lancer c": { - "name": "Romania - Lancer C", - "countries": "All" - }, - "angola - c41": { - "name": "Angola - C41", - "countries": "All" - }, - "poland - 1 dlmw": { - "name": "Poland - 1 DLMW", - "countries": "All" - }, - "yugoslavia - gray": { - "name": "Yugoslavia - Grey", - "countries": "All" - }, - "angola - c314": { - "name": "Angola - C314", - "countries": "All" - }, - "argentina (1)": { - "name": "Argentina (1)", - "countries": "All" - }, - "romania - gray": { - "name": "Romania - Gray", - "countries": "All" - }, - "dprk - 2016 - 42": { - "name": "DPRK - 2016 Nr.42", - "countries": "All" - }, - "libya - early": { - "name": "Lybia - Early", - "countries": "All" - }, - "poland - metal": { - "name": "Poland - Lacquer Metal", - "countries": "All" - }, - "syria (2)": { - "name": "Syria (2)", - "countries": "All" - }, - "india - 15th sqn": { - "name": "India - 15 Sqn War Games", - "countries": "All" - }, - "cuba - um 5010 is": { - "name": "Cuba - UM 5010 IS", - "countries": "All" - }, - "afghanistan (2)": { - "name": "Afghanistan (2)", - "countries": "All" - }, - "iraq - 9th sqn": { - "name": "Iraq - 9th Sqn", - "countries": "All" - }, - "vpaf - 927th lam son - 6122": { - "name": "VPAF - 927th Lam Son", - "countries": "All" - }, - "yugoslavia - camo": { - "name": "Yugoslavia - Camo", - "countries": "All" - }, - "egypt - tan 1982": { - "name": "Egypt - Tan 1982", - "countries": "All" - }, - "croatia - 1st fs 1992": { - "name": "Croatia - 1st FS 1992", - "countries": "All" - }, - "southeria": { - "name": "Southeria", - "countries": "All" - }, - "ukraine (1)": { - "name": "Ukraine 01", - "countries": "All" - }, - "georgia (1)": { - "name": "Georgia (1)", - "countries": "All" - }, - "northeria - 32nd fs": { - "name": "Northeria - 32nd FG", - "countries": "All" - }, - "cuba - metal": { - "name": "Cuba - Metal", - "countries": "All" - }, - "huaf 47th ab - early": { - "name": "HunAF Griff Sqn. (47th AB) - Early ", - "countries": "All" - }, - "jasdf": { - "name": "JASDF", - "countries": "All" - }, - "raf - 111th sqn": { - "name": "RAF - 111th Sqn", - "countries": "All" - }, - "sweden - m90": { - "name": "Sweden - M90", - "countries": "All" - }, - "algeria": { - "name": "Algeria FD-43", - "countries": "All" - }, - "india - 101st sqn (2)": { - "name": "India - 101st Sqn Falcons (2)", - "countries": "All" - }, - "draken international": { - "name": "Draken International", - "countries": "All" - }, - "raf - 11th sqn": { - "name": "RAF - 11th Sqn", - "countries": "All" - }, - "vpaf - 921st sao do - 5040": { - "name": "VPAF - 921st Sao Do", - "countries": "All" - }, - "vvs - metal": { - "name": "VVS Metal", - "countries": "All" - }, - "iraq - 17th sqn (1)": { - "name": "Iraq - 17th Sqn (1)", - "countries": "All" - }, - "vvs - 185th gviap": { - "name": "VVS 185th GvIAP", - "countries": "All" - }, - "poland - 10 elt": { - "name": "Poland - 10 ELT", - "countries": "All" - }, - "dprk - 2014 - 34": { - "name": "DPRK - 2014 Nr.34", - "countries": "All" - }, - "huaf grey": { - "name": "HuAF Grey", - "countries": "All" - }, - "huaf 31st ab (turul sqn)": { - "name": "HunAF 1904 Capeti (51th AB)", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew. Fishbed", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-23MLD": { - "name": "MiG-23MLD", - "coalition": "red", - "label": "MiG-23 Flogger", - "era": "Mid Cold War", - "shortLabel": "23", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*4", - "name": "R-60M*4", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*2,R-60M*2,Fuel-800", - "name": "B-8*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-32*2,R-60M*2,Fuel-800", - "name": "UB-32*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-24R*2,R-60M*4,Fuel-800", - "name": "R-24R*2,R-60M*4,Fuel-800", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-24T (AA-7 Apex IR) - Infra Red", - "quantity": 1 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - }, - { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-24R,R-24T,R-60M*4,Fuel-800", - "name": "R-24R,R-24T,R-60M*4,Fuel-800", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*4,Fuel-800", - "name": "R-60M*4,Fuel-800", - "roles": [ - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*2,R-60M*2,Fuel-800", - "name": "FAB-500*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-24R*2,R-60M*4", - "name": "R-24R*2,R-60M*4", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*2,R-60M*2,Fuel-800", - "name": "FAB-250*2,R-60M*2,Fuel-800", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*2,R-60M*2,Fuel-800", - "name": "RBK-250*2,R-60M*2,Fuel-800", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500*2,R-60M*2,Fuel-800", - "name": "RBK-500*2,R-60M*2,Fuel-800", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-24T (AA-7 Apex IR) - Infra Red", - "quantity": 1 - }, - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-24R,R-24T,R-60M*4", - "name": "R-24R,R-24T,R-60M*4", - "roles": [ - "CAP" - ] - } - ], - "filename": "mig-23.png", - "enabled": true, - "liveries": { - "af standard-2": { - "name": "af standard-2", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard-3 (worn-out)": { - "name": "af standard-3 (worn-out)", - "countries": [ - "SUN", - "RUS" - ] - }, - "algerian air force": { - "name": "Algerian Air Force", - "countries": [ - "DZA" - ] - }, - "af standard-1": { - "name": "af standard-1", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swing wing, 1 crew. Flogger", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-25PD": { - "name": "MiG-25PD", - "coalition": "red", - "label": "MiG-25PD Foxbat", - "era": "Mid Cold War", - "shortLabel": "25P", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40TD (AA-6 Acrid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-40R*2,R-40T*2", - "name": "R-40R*2,R-40T*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-40R*4", - "name": "R-40R*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-40R*2,R-60M*2", - "name": "R-40R*2,R-60M*2", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - } - ], - "filename": "mig-25.png", - "enabled": true, - "liveries": { - "algerian air force": { - "name": "Algeria Air Force standard", - "countries": [ - "DZA" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Foxbat", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-25RBT": { - "name": "MiG-25RBT", - "coalition": "red", - "label": "MiG-25RBT Foxbat", - "era": "Mid Cold War", - "shortLabel": "25R", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500x2_60x2", - "name": "FAB-500x2_60x2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*2", - "name": "R-60M*2", - "roles": [ - "Reconnaissance" - ] - } - ], - "filename": "mig-25.png", - "enabled": true, - "liveries": { - "algerian air force": { - "name": "Algeria Air Force standard", - "countries": [ - "DZA" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Foxbat", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-27K": { - "name": "MiG-27K", - "coalition": "red", - "label": "MiG-27K Flogger-D", - "era": "Mid Cold War", - "shortLabel": "M27", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*6,R-60M*2,Fuel", - "name": "FAB-250*6,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500ShP*2,FAB-250*2,R-60*2", - "name": "BetAB-500ShP*2,FAB-250*2,R-60*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-25MR*2,R-60M*2,Fuel", - "name": "Kh-25MR*2,R-60M*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2,Fuel", - "name": "Kh-29L*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "B-8*4", - "name": "B-8*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*2,FAB-500*2,R-60*2", - "name": "BetAB-500*2,FAB-500*2,R-60*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-25MPU*2,R-60M*2,Fuel", - "name": "Kh-25MPU*2,R-60M*2,Fuel", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-60M*2,Fuel", - "name": "Kh-29T*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", - "name": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-25ML*2,R-60M*2,Fuel", - "name": "Kh-25ML*2,R-60M*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*2,R-60M*2,Fuel", - "name": "KAB-500*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*2,RBK-250*2,R-60M*2", - "name": "RBK-500AO*2,RBK-250*2,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-32*4", - "name": "UB-32*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60*2,Fuel", - "name": "Kh-29L*2,R-60*2,Fuel", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "mig-23.png", - "enabled": true, - "liveries": { - "algerian air force": { - "name": "Algerian Air Force", - "countries": [ - "DZA" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swing wing, 1 crew. Flogger", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-29A": { - "name": "MiG-29A", - "coalition": "red", - "label": "MiG-29A Fulcrum", - "era": "Late Cold War", - "shortLabel": "M29", - "loadouts": [ - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*4,R-73*2,Fuel", - "name": "B-8*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*4,R-73*2,Fuel", - "name": "BetAB-500*4,R-73*2,Fuel", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,R-73*2,Fuel", - "name": "FAB-250*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*4,R-73*2,Fuel", - "name": "FAB-500*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 1150L MiG-29", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel-1150*2,Fuel-1500", - "name": "Fuel-1150*2,Fuel-1500", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2", - "name": "R-60M*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2,Fuel-1500", - "name": "R-60M*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-60M*6", - "name": "R-60M*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*6,Fuel-1500", - "name": "R-60M*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2", - "name": "R-73*2,R-60M*2,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "name": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2", - "name": "R-73*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2,Fuel-1500", - "name": "R-73*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*6", - "name": "R-73*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*6,Fuel-1500", - "name": "R-73*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*4,R-73*2,Fuel", - "name": "RBK-250*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*4,R-73*2,Fuel", - "name": "RBK-500AO*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*2,FAB-500*2,R-73*2,Fuel", - "name": "S-24*2,FAB-500*2,R-73*2,Fuel", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*4,R-73*2,Fuel", - "name": "S-24*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - } - ], - "filename": "mig-29.png", - "enabled": true, - "liveries": { - "air force ukraine standard": { - "name": "Air Force (Standard)", - "countries": [ - "UKR" - ] - }, - "air force standard": { - "name": "Air Force (Standard)", - "countries": [ - "SUN", - "RUS" - ] - }, - "strizhi": { - "name": "Strizhi 1992", - "countries": [ - "RUS" - ] - }, - "domna 120th ar": { - "name": "Domna - 120th Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "mary-1 agressors": { - "name": "Soviet Air Forces, a/b 1521 (Mary-1)", - "countries": [ - "RUS" - ] - }, - "polish 41st sqn standard1": { - "name": "41st Sqn Standard 1", - "countries": [ - "POL" - ] - }, - "iriaf sand-blue": { - "name": "IRIAF sand-blue", - "countries": [ - "IRN" - ] - }, - "strizhi (w)": { - "name": "Strizhi 1992(W)", - "countries": [ - "RUS" - ] - }, - "polish 41st sqn standard2": { - "name": "41st Sqn Standard 2", - "countries": [ - "POL" - ] - }, - "vasylkiv 40th brta": { - "name": "Vasylkiv - 40th Brigade of Tactical Aviation", - "countries": [ - "UKR" - ] - }, - "kazakhstan air defense forces": { - "name": "KazAADF 600th Airbase 2015", - "countries": [ - "KAZ" - ] - }, - "kazakhstan kazaadf 2008": { - "name": "KazAADF 600th Airbase 2008", - "countries": [ - "KAZ" - ] - }, - "iriaf blue-grey": { - "name": "IRIAF blue-grey", - "countries": [ - "IRN" - ] - }, - "syaaf": { - "name": "Syrian Arab Air Force", - "countries": [ - "SYR" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-29S": { - "name": "MiG-29S", - "coalition": "red", - "label": "MiG-29S Fulcrum", - "era": "Late Cold War", - "shortLabel": "M29", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2", - "name": "R-73*2,R-60M*2,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2,Fuel-1500", - "name": "R-73*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*6,Fuel-1500", - "name": "R-73*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*6,Fuel-1500", - "name": "R-60M*6,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*4,R-73*2,Fuel", - "name": "S-24*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*4,R-73*2,Fuel", - "name": "FAB-500*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*4,R-73*2,Fuel", - "name": "BetAB-500*4,R-73*2,Fuel", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*4,R-73*2,Fuel", - "name": "RBK-500AO*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "name": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1150L MiG-29", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77*2,R-73*2,Fuel-1500,Fuel-1150*2", - "name": "R-77*2,R-73*2,Fuel-1500,Fuel-1150*2", - "roles": [ - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*4,R-73*2,Fuel", - "name": "B-8*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*4,R-73*2,Fuel", - "name": "RBK-250*4,R-73*2,Fuel", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*6", - "name": "R-73*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Fuel tank 1150L MiG-29", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel-1150*2,Fuel-1500", - "name": "Fuel-1150*2,Fuel-1500", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-60M*6", - "name": "R-60M*6", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2", - "name": "R-60M*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2", - "name": "R-73*4,R-27R*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-77*4,R-73*2", - "name": "R-77*4,R-73*2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,R-73*2,Fuel", - "name": "FAB-250*4,R-73*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-60M*4,R-27R*2,Fuel-1500", - "name": "R-60M*4,R-27R*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-77*4,R-73*2,Fuel-1500", - "name": "R-77*4,R-73*2,Fuel-1500", - "roles": [ - "CAP", - "CAP", - "Escort" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "Fuel tank 1400L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*2,FAB-500*2,R-73*2,Fuel", - "name": "S-24*2,FAB-500*2,R-73*2,Fuel", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "mig-29.png", - "enabled": true, - "liveries": { - "algerian af fc-16": { - "name": "Algerian AF FC-16", - "countries": [ - "DZA" - ] - }, - "air force ukraine standard": { - "name": "Air Force (Standard)", - "countries": [ - "UKR" - ] - }, - "air force standard": { - "name": "Air Force (Standard)", - "countries": [ - "RUS" - ] - }, - "kazaadf new faded (fictional)": { - "name": "KazAADF new faded (fictional)", - "countries": [ - "KAZ" - ] - }, - "strizhi": { - "name": "Strizhi 2003", - "countries": [ - "RUS" - ] - }, - "115 gviap_termez": { - "name": "Termez AFB, 115th Guards Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "1521th air base_mary-1": { - "name": "Mary-1 AFB, 1521st Air Force Base", - "countries": [ - "RUS" - ] - }, - "kazaadf old (fictional)": { - "name": "KazAADF old (fictional)", - "countries": [ - "KAZ" - ] - }, - "swifts": { - "name": "Swifts (Aerobatic team)", - "countries": [ - "RUS" - ] - }, - "773 iap_damgarten": { - "name": "Damgarten AFB, 773rd Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "426th air group_erebuni": { - "name": "Erebuni AFB, 426th Air Group", - "countries": [ - "RUS" - ] - }, - "31 gviap_zernograd": { - "name": "Zernograd AFB, 31st Guards Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "28 gviap_andreapol": { - "name": "Andreapol AFB, 28th Guards Aviation Regiment", - "countries": [ - "RUS" - ] - }, - "belarusian air force": { - "name": "Belarusian Air Force 61 FAB Baranavichy (2017)", - "countries": [ - "BLR" - ] - }, - "kazaadf new (fictional)": { - "name": "KazAADF new (fictional)", - "countries": [ - "KAZ" - ] - }, - "falcons of russia": { - "name": "Lipetsk, aerobatic group Falcons of Russia", - "countries": [ - "RUS" - ] - }, - "kazaadf new (fictional digital)": { - "name": "KazAADF new digital (fictional digital)", - "countries": [ - "KAZ" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MiG-31": { - "name": "MiG-31", - "coalition": "red", - "label": "MiG-31 Foxhound", - "era": "Late Cold War", - "shortLabel": "M31", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40TD (AA-6 Acrid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-40T*2,R-33*4", - "name": "R-40T*2,R-33*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 1 - }, - { - "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", - "quantity": 4 - }, - { - "name": "R-40TD (AA-6 Acrid) - Infra Red", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-40T,R-33*4,R-40R", - "name": "R-40T,R-33*4,R-40R", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-40R*2,R-33*4", - "name": "R-40R*2,R-33*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-60M*4,R-33*4", - "name": "R-60M*4,R-33*4", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - } - ], - "filename": "mig-23.png", - "enabled": true, - "liveries": { - "174 gviap_boris safonov": { - "name": "174 GvIAP Boris Safonov", - "countries": [ - "RUS" - ] - }, - "903_white": { - "name": "Demo 903 White", - "countries": [ - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 2 crew. Foxhound", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Mirage-F1EE": { - "name": "Mirage-F1EE", - "coalition": "blue", - "label": "Mirage-F1EE", - "era": "Mid Cold War", - "shortLabel": "MF1", - "loadouts": [ - { - "items": [ - { - "name": "AIM-9J Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Chute Retarded Bomb HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", - "name": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9J Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 LD", - "name": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 LD", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 4 - }, - { - "name": "CLB 4 - 4 x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9JULI, 8*BLU107 Durandal", - "name": "2*AIM-9JULI, 8*BLU107 Durandal", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "SAMP-250 - 250 kg GP Chute Retarded Bomb HD", - "quantity": 4 - }, - { - "name": "CLB 4 - 4 x SAMP-250 - 250 kg GP Chute Retarded Bomb HD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9JULI, 8*SAMP 250 HD", - "name": "2*AIM-9JULI, 8*SAMP 250 HD", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "SAMP-400 - 400 kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Bomb LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM-9JULI, 8*SAMP 400 LD", - "name": "2*AIM-9JULI, 8*SAMP 400 LD", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-9J Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 251 F1B HE", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", - "name": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F EM", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 1*R530EM", - "name": "2*AIM9-JULI, 1*R530EM", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", - "name": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F EM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", - "name": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", - "name": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9JULI Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "S530F", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*AIM9-JULI, 2*S530F, 1*Fuel Tank", - "name": "2*AIM9-JULI, 2*S530F, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 1*R530IR", - "name": "2*R550 Magic I, 1*R530IR", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", - "name": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "R530F IR", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", - "name": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "S530F", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*S530F, 1*Fuel Tank", - "name": "2*R550 Magic I, 2*S530F, 1*Fuel Tank", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "S530F", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - }, - { - "name": "BARAX - ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*S530F, 1*Fuel Tank, 1*BARAX ECM Pod", - "name": "2*R550 Magic I, 2*S530F, 1*Fuel Tank, 1*BARAX ECM Pod", - "roles": [ - "CAP", - "CAP", - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "SAMP-250 - 250 kg GP Chute Retarded Bomb HD", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 2 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R550 Magic 1 IR AAM", - "quantity": 2 - }, - { - "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", - "quantity": 4 - }, - { - "name": "RP35 Pylon Fuel Tank (1137 l usable)", - "quantity": 1 - } - ], - "enabled": true, - "code": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", - "name": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", - "roles": [ - "CAS" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - } - ], - "filename": "f-1.png", - "enabled": true, - "liveries": { - "ec 330 lorraine": { - "name": "EC 330 Lorraine", - "countries": [ - "FRA" - ] - }, - "ec 5 330 cote d'argent (fictional ct)": { - "name": "EC 5/330 Cote d'Argent (FICTIONAL CT)", - "countries": [ - "FRA" - ] - }, - "er 2 33 savoie 100 ans de reco (fictional cr)": { - "name": "ER 233 Savoie 100 ans de reco (FICTIONAL CR)", - "countries": [ - "FRA" - ] - }, - "iriaf 3-6210 _ 2017 blue (eq variant)": { - "name": "IRIAF 3-6210 _ 2017 Blue (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "iriaf 3-6209 _ 2010s blue_gray (eq variant)": { - "name": "IRIAF 3-6209 _ 2010s Blue_Gray (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "er 233 savoie ba 118 mont de marsan (fictional cr)": { - "name": "ER 2/33 Savoie BA 118 Mont de Marsan (FICTIONAL CR)", - "countries": [ - "FRA" - ] - }, - "ala 14 blue skin (ee) albacete": { - "name": "ALA 14 Blue Skin (EE) Albacete", - "countries": [ - "SPN" - ] - }, - "usa company skin (m-ee)": { - "name": "USA Company Skin EE", - "countries": [ - "USA", - "AUSAF" - ] - }, - "ala 14 nato skin 1 (ee)": { - "name": "ALA 14 NATO Skin 1 (EE)", - "countries": [ - "SPN" - ] - }, - "iriaf 3-6210 _ 2013 gray (eq variant)": { - "name": "IRIAF 3-6210 _ 2013 Gray (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "usa company skin 2 (m-ee)": { - "name": "USA Company Skin 2 EE", - "countries": [ - "USA", - "AUSAF" - ] - }, - "iriaf 3-6214 _ 2021 blue (eq variant)": { - "name": "IRIAF 3-6214 _ 2021 Blue (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "aerges nato grey": { - "name": "AERGES NATO GREY", - "countries": [ - "CUB", - "AUS", - "PRT", - "SUN", - "USA", - "BLR", - "HRV", - "LBN", - "SVK", - "TUR", - "ARG", - "BEL", - "FIN", - "SAU", - "RSI", - "CHL", - "AUT", - "EGY", - "ECU", - "CAN", - "QAT", - "YUG", - "ISR", - "PER", - "BHR", - "NGA", - "IDN", - "KAZ", - "INS", - "AUSAF", - "PAK", - "SVN", - "ROU", - "DEN", - "TUN", - "IND", - "CZE", - "MYS", - "GHA", - "OMN", - "RSO", - "IRN", - "UKR", - "JPN", - "THA", - "JOR", - "RSA", - "MEX", - "NOR", - "ITA", - "NETH", - "SUI", - "VNM", - "KOR", - "GRG", - "SDN", - "UK", - "BRA", - "ARE", - "ABH", - "BOL", - "RUS", - "PHL", - "SPN", - "MAR", - "DZA", - "GDR", - "HND", - "PRK", - "SRB", - "BGR", - "LBY", - "VEN", - "IRQ", - "SYR", - "NZG", - "GRC", - "POL", - "SWE", - "GER", - "CHN", - "YEM", - "FRA", - "HUN", - "ETH", - "KWT" - ] - }, - "ec 3 33 lorraine ba 112 reims - champagne ardennes": { - "name": "EC 333 Lorraine BA 112 Reims - Champagne Ardennes", - "countries": [ - "FRA" - ] - }, - "ec 1 12 cambresis": { - "name": "EC 112 BA 103 Cambrai-Épinoy", - "countries": [ - "FRA" - ] - }, - "ala 46 blue skin (ee) gando": { - "name": "ALA 46 Blue Skin (EE) Gando", - "countries": [ - "SPN" - ] - }, - "aerges blue": { - "name": "AERGES BLUE", - "countries": [ - "CUB", - "AUS", - "PRT", - "SUN", - "USA", - "BLR", - "HRV", - "LBN", - "SVK", - "TUR", - "ARG", - "BEL", - "FIN", - "SAU", - "RSI", - "CHL", - "AUT", - "EGY", - "ECU", - "CAN", - "QAT", - "YUG", - "ISR", - "PER", - "BHR", - "NGA", - "IDN", - "KAZ", - "INS", - "AUSAF", - "PAK", - "SVN", - "ROU", - "DEN", - "TUN", - "IND", - "CZE", - "MYS", - "GHA", - "OMN", - "RSO", - "IRN", - "UKR", - "JPN", - "THA", - "JOR", - "RSA", - "MEX", - "NOR", - "ITA", - "NETH", - "SUI", - "VNM", - "KOR", - "GRG", - "SDN", - "UK", - "BRA", - "ARE", - "ABH", - "BOL", - "RUS", - "PHL", - "SPN", - "MAR", - "DZA", - "GDR", - "HND", - "PRK", - "SRB", - "BGR", - "LBY", - "VEN", - "IRQ", - "SYR", - "NZG", - "GRC", - "POL", - "SWE", - "GER", - "CHN", - "YEM", - "FRA", - "HUN", - "ETH", - "KWT" - ] - }, - "ec 212 picardie": { - "name": "EC 212 Picardie", - "countries": [ - "FRA" - ] - }, - "iriaf 3-6212 _ col. naghdibake (eq variant)": { - "name": "IRIAF 3-6212 _ Col. Naghdibake (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "iriaf 3-6211 _ 2010s blue_gray (eq variant)": { - "name": "IRIAF 3-6211 _ 2010s Blue_Gray (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "ec 1 5 vendee ba orange-cariat": { - "name": "EC 1/5 Vendee BA 115 Orange-Cariat", - "countries": [ - "FRA" - ] - }, - "er 233 savoie ba 118 mont de marsan dessert camu (fictional cr)": { - "name": "ER 233 Savoie BA 118 Mont de Marsan Dessert Camu (FICTIONAL CR)", - "countries": [ - "FRA" - ] - }, - "iriaf 3-6215 _ 2021 blue (eq variant)": { - "name": "IRIAF 3-6215 _ 2021 Blue (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "iriaf 3-6210 _ 2021 blue (eq variant)": { - "name": "IRIAF 3-6210 _ 2021 Blue (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "ala 46 sq 462 blue skin (ee) gando": { - "name": "ALA 46 SQ 462 Blue Skin (EE) Gando", - "countries": [ - "SPN" - ] - }, - "ec 2 30 normandie niemen (fictional ct)": { - "name": "EC 2/30 Normandie Niemen (FICTIONAL CT)", - "countries": [ - "FRA" - ] - }, - "iriaf 3-6215 _ 1990-2010s desert (eq variant)": { - "name": "IRIAF 3-6215 _ 1990-2010s Desert (EQ Variant)", - "countries": [ - "IRN", - "INS" - ] - }, - "aerges camo": { - "name": "AERGES CAMO", - "countries": [ - "CUB", - "AUS", - "PRT", - "SUN", - "USA", - "BLR", - "HRV", - "LBN", - "SVK", - "TUR", - "ARG", - "BEL", - "FIN", - "SAU", - "RSI", - "CHL", - "AUT", - "EGY", - "ECU", - "CAN", - "QAT", - "YUG", - "ISR", - "PER", - "BHR", - "NGA", - "IDN", - "KAZ", - "INS", - "AUSAF", - "PAK", - "SVN", - "ROU", - "DEN", - "TUN", - "IND", - "CZE", - "MYS", - "GHA", - "OMN", - "RSO", - "IRN", - "UKR", - "JPN", - "THA", - "JOR", - "RSA", - "MEX", - "NOR", - "ITA", - "NETH", - "SUI", - "VNM", - "KOR", - "GRG", - "SDN", - "UK", - "BRA", - "ARE", - "ABH", - "BOL", - "RUS", - "PHL", - "SPN", - "MAR", - "DZA", - "GDR", - "HND", - "PRK", - "SRB", - "BGR", - "LBY", - "VEN", - "IRQ", - "SYR", - "NZG", - "GRC", - "POL", - "SWE", - "GER", - "CHN", - "YEM", - "FRA", - "HUN", - "ETH", - "KWT" - ] - }, - "usa company grey (m-ee)": { - "name": "USA Company Grey EE", - "countries": [ - "USA", - "AUSAF" - ] - } - }, - "type": "Aircraft", - "description": "Single Jet engine, swept wing, 1 crew.", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "MosquitoFBMkVI": { - "name": "MosquitoFBMkVI", - "coalition": "blue", - "label": "Mosquito FB MkVI", - "era": "WW2", - "shortLabel": "Mos", - "loadouts": [ - { - "items": [ - { - "name": "100 gal. Drop Tank", - "quantity": 2 - }, - { - "name": "500 lb MC Short tail", - "quantity": 2 - } - ], - "enabled": true, - "code": "100 gal Drop tank*2, 500 lb MC Short tail*2", - "name": "100 gal Drop tank*2, 500 lb MC Short tail*2", - "roles": [ - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": "2 x RP-3 60lb F No1 Mk.I", - "quantity": 2 - }, - { - "name": "100 gal. Drop Tank", - "quantity": 2 - }, - { - "name": "250 lb MC Mk.II", - "quantity": 2 - } - ], - "enabled": true, - "code": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", - "name": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", - "roles": [ - "CAP", - "Antiship Strike", - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "500 lb S.A.P.", - "quantity": 2 - }, - { - "name": "250 lb S.A.P.", - "quantity": 2 - } - ], - "enabled": true, - "code": "250 lb S.A.P*2; 500 lb S.A.P.*2", - "name": "250 lb S.A.P*2; 500 lb S.A.P.*2", - "roles": [ - "CAP", - "Strike" - ] - }, - { - "items": [ - { - "name": "500 lb GP Mk.V", - "quantity": 2 - }, - { - "name": "500 lb MC Short tail", - "quantity": 2 - } - ], - "enabled": true, - "code": "500 lb GP Mk.V*2, 500 lb GP Short tail*2", - "name": "500 lb GP Mk.V*2, 500 lb GP Short tail*2", - "roles": [ - "CAP", - "Strike", - "CAS", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "500 lb GP Short tail", - "quantity": 4 - } - ], - "enabled": true, - "code": "500 lb GP Short tail*4", - "name": "500 lb GP Short tail*4", - "roles": [ - "CAP", - "Strike", - "CAS", - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "", - "quantity": 2 - }, - { - "name": "250 lb S.A.P.", - "quantity": 2 - }, - { - "name": "4 x RP-3 60lb SAP No2 Mk.I", - "quantity": 2 - } - ], - "enabled": true, - "code": "RP-3 60lb SAP No2 Mk.I*8, 250 lb A.A.P.*2", - "name": "RP-3 60lb SAP No2 Mk.I*8, 250 lb A.A.P.*2", - "roles": [ - "CAP", - "Antiship Strike", - "CAS", - "Strike" - ] - } - ], - "filename": "mosquito.png", - "enabled": true, - "liveries": { - "25th bombardment group p": { - "name": "USAAF 25th Bombardment Group \"P\" (Invasion Stripes)", - "countries": [ - "USA" - ] - }, - "l-3 pz474 1945": { - "name": "L-3 PZ474 1945", - "countries": [] - }, - "raf": { - "name": "RAF 1944", - "countries": "All" - }, - "605 sqn up-j wag's war wagon": { - "name": "605 Sqn UP-J \"Wag's War Wagon\"", - "countries": "All" - }, - "605 sqn up-o": { - "name": "605 Sqn UP-O", - "countries": "All" - }, - "605 sqn": { - "name": "605 Sqn", - "countries": "All" - }, - "iaf - 1956 - 110th squadron": { - "name": "IAF - 1956 - 110th Squadron", - "countries": "All" - }, - "ussr air force": { - "name": "USSR Air Force", - "countries": [] - }, - "no. 235 squadron raf 1944": { - "name": "No. 235 Squadron RAF 1944", - "countries": [] - }, - "no. 613 squadron raf june 1944": { - "name": "No. 613 Squadron RAF, June 1944", - "countries": [ - "UK" - ] - }, - "armée de l'air blue": { - "name": "Armée de L'air Blue Camo", - "countries": [ - "FRA" - ] - }, - "raf, ml897d, no.1409 met flight, wyton, late 1943": { - "name": "RAF, ML897/D, No.1409 Met Flight, Wyton, late 1943", - "countries": [ - "UK" - ] - }, - "no. 27 squadron raf popeye camo letters on": { - "name": "No. 27 Squadron RAF Popeye Camo Letters on", - "countries": [] - }, - "25th bombardment group f": { - "name": "USAAF 25th Bombardment Group \"F\"", - "countries": [ - "USA" - ] - }, - "305sqn july": { - "name": "305Sqn July 1944", - "countries": [] - }, - "305sqn june": { - "name": "305Sqn June 1944", - "countries": [] - }, - "25th bombardment group z": { - "name": "USAAF 25th Bombardment Group \"Z\" (Invasion Stripes)", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 propeller, straight wing, 2 crew. Mosquito.", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "P-47D-40": { - "name": "P-47D-40", - "coalition": "blue", - "label": "P-47D Thunderbolt", - "era": "WW2", - "shortLabel": "P47", - "loadouts": [ - { - "items": [ - { - "name": "AN-M57 - 250lb GP Bomb LD", - "quantity": 3 - } - ], - "enabled": true, - "code": "AN-M57*3", - "name": "AN-M57*3", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "110 US gal. Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "AN-M64*2, Fuel110", - "name": "AN-M64*2, Fuel110", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AN-M65 - 1000lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "AN-M65*2", - "name": "AN-M65*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "150 US gal. Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel150*2", - "name": "Fuel150*2", - "roles": [ - "Escort", - "CAP" - ] - }, - { - "items": [ - { - "name": "5 x HVAR, UnGd Rkt", - "quantity": 2 - }, - { - "name": "110 US gal. Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "HVAR*10, Fuel110", - "name": "HVAR*10, Fuel110", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "3 x 4.5 inch M8 UnGd Rocket", - "quantity": 2 - }, - { - "name": "AN-M57 - 250lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "110 US gal. Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "M8*6, AN-M57*2, Fuel110", - "name": "M8*6, AN-M57*2, Fuel110", - "roles": [ - "Strike", - "CAS" - ] - } - ], - "filename": "p-47.png", - "enabled": true, - "liveries": { - "79thfg 86thfs the trojan warhorse": { - "name": "79thFG 86thFS The Trojan Warhorse", - "countries": [ - "USA" - ] - }, - "61st_fs_d_day": { - "name": "61st FS, D-day", - "countries": [ - "USA" - ] - }, - "lt_col_gabreski_d_day": { - "name": "Lt.Col. Gabby Gabreski, 61st FS, D-day", - "countries": [ - "USA" - ] - }, - "lt_col_benjamin_mayo": { - "name": "Lt.Col. Benjamin Mayo", - "countries": [ - "USA" - ] - }, - "eagle dynamics commemorative": { - "name": "Eagle Dynamics Commemorative", - "countries": [ - "USA" - ] - }, - "tony 5th emergency rescue squadron": { - "name": "TONY 5th Emergency Rescue Squadron", - "countries": [ - "USA" - ] - }, - "usaf standard": { - "name": "USAF standard", - "countries": [ - "USA" - ] - }, - "maj_howard_park_1945": { - "name": "Maj. Howard Park, 513th FS, France 1945", - "countries": [ - "USA" - ] - }, - "61st_fs_8th_af_hvz": { - "name": "61st FS 8th Air Force HV-Z (Capt. Witold Lanowski)", - "countries": [ - "USA", - "POL" - ] - }, - "53rd_fs_9th_air_force": { - "name": "53rd Fighter Squadron", - "countries": [ - "USA" - ] - }, - "1st brazilian ftr sq-jambock a1-menezes": { - "name": "1st Brazilian Ftr Sq-Jambock A1-Menezes", - "countries": [] - }, - "61st_fs_1944": { - "name": "61st FS, July 1944", - "countries": [ - "USA" - ] - }, - "lt_col_gabreski_1944": { - "name": "Lt.Col. Gabby Gabreski, 61st FS, July 1944", - "countries": [ - "USA" - ] - }, - "lend-lease": { - "name": "Lend-Lease", - "countries": [ - "SUN", - "RUS" - ] - }, - "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d28": { - "name": "509th FS 405th FG \"Chief Ski-U-Mah\" for D-30 (Early) ", - "countries": "All" - }, - "ussr-blue-scheme": { - "name": "USSR - blue", - "countries": [ - "SUN", - "RUS" - ] - }, - "raf thunderbolt": { - "name": "RAF Thunderbolt", - "countries": [] - }, - "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d40": { - "name": "509th FS 405th FG \"Chief Ski-U-Mah\"", - "countries": "All" - }, - "warchief": { - "name": "WarChief", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Thunderbolt", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "P-51D-30-NA": { - "name": "P-51D-30-NA", - "coalition": "blue", - "label": "P-51D Mustang", - "era": "WW2", - "shortLabel": "P51", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "75 US gal. Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel75*2", - "name": "Fuel75*2", - "roles": [ - "CAP", - "CAP", - "FAC-A" - ] - }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 10 - } - ], - "enabled": true, - "code": "HVAR*10", - "name": "HVAR*10", - "roles": [ - "CAS", - "Strike", - "Runway Attack", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "HVAR*6", - "name": "HVAR*6", - "roles": [ - "CAS", - "Strike", - "Antiship Strike", - "FAC-A" - ] - }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 6 - }, - { - "name": "75 US gal. Fuel Tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "HVAR*6,Fuel75*2", - "name": "HVAR*6,Fuel75*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "HVAR, UnGd Rkt", - "quantity": 6 - }, - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "HVAR*6,M64*2", - "name": "HVAR*6,M64*2", - "roles": [ - "CAS", - "Strike", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "AN-M64 - 500lb GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "M64*2", - "name": "M64*2", - "roles": [ - "Strike", - "Antiship Strike", - "CAS", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "HVAR Smoke Generator", - "quantity": 2 - } - ], - "enabled": true, - "code": "Smokes", - "name": "Smokes", - "roles": [] - } - ], - "filename": "p-51.png", - "enabled": true, - "liveries": { - "79thfg 86thfs the trojan warhorse": { - "name": "79thFG 86thFS The Trojan Warhorse", - "countries": [ - "USA" - ] - }, - "61st_fs_d_day": { - "name": "61st FS, D-day", - "countries": [ - "USA" - ] - }, - "lt_col_gabreski_d_day": { - "name": "Lt.Col. Gabby Gabreski, 61st FS, D-day", - "countries": [ - "USA" - ] - }, - "lt_col_benjamin_mayo": { - "name": "Lt.Col. Benjamin Mayo", - "countries": [ - "USA" - ] - }, - "eagle dynamics commemorative": { - "name": "Eagle Dynamics Commemorative", - "countries": [ - "USA" - ] - }, - "tony 5th emergency rescue squadron": { - "name": "TONY 5th Emergency Rescue Squadron", - "countries": [ - "USA" - ] - }, - "usaf standard": { - "name": "USAF standard", - "countries": [ - "USA" - ] - }, - "maj_howard_park_1945": { - "name": "Maj. Howard Park, 513th FS, France 1945", - "countries": [ - "USA" - ] - }, - "61st_fs_8th_af_hvz": { - "name": "61st FS 8th Air Force HV-Z (Capt. Witold Lanowski)", - "countries": [ - "USA", - "POL" - ] - }, - "53rd_fs_9th_air_force": { - "name": "53rd Fighter Squadron", - "countries": [ - "USA" - ] - }, - "1st brazilian ftr sq-jambock a1-menezes": { - "name": "1st Brazilian Ftr Sq-Jambock A1-Menezes", - "countries": [] - }, - "61st_fs_1944": { - "name": "61st FS, July 1944", - "countries": [ - "USA" - ] - }, - "lt_col_gabreski_1944": { - "name": "Lt.Col. Gabby Gabreski, 61st FS, July 1944", - "countries": [ - "USA" - ] - }, - "lend-lease": { - "name": "Lend-Lease", - "countries": [ - "SUN", - "RUS" - ] - }, - "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d28": { - "name": "509th FS 405th FG \"Chief Ski-U-Mah\" for D-30 (Early) ", - "countries": "All" - }, - "ussr-blue-scheme": { - "name": "USSR - blue", - "countries": [ - "SUN", - "RUS" - ] - }, - "raf thunderbolt": { - "name": "RAF Thunderbolt", - "countries": [] - }, - "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d40": { - "name": "509th FS 405th FG \"Chief Ski-U-Mah\"", - "countries": "All" - }, - "warchief": { - "name": "WarChief", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "Single propellor, straight wing, 1 crew. Mustang", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "S-3B Tanker": { - "name": "S-3B Tanker", - "coalition": "blue", - "label": "S-3B Tanker", - "era": "Early Cold War", - "shortLabel": "S3B", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Tanker" - ] - } - ], - "filename": "s-3.png", - "enabled": true, - "liveries": { - "usaf standard": { - "name": "NAVY Standard", - "countries": [ - "USA" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, straight wing, 4 crew. Viking", - "abilities": "Tanker, Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": false, - "canRearm": false - }, - "Su-17M4": { - "name": "Su-17M4", - "coalition": "red", - "label": "Su-17M4 Fitter", - "era": "Mid Cold War", - "shortLabel": "S17", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-32*4,R-60M*2,FAB-250*4", - "name": "UB-32*4,R-60M*2,FAB-250*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 6 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100*24,R-60M*2", - "name": "FAB-100*24,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-32*4,R-60M*2,Fuel*2", - "name": "UB-32*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "B-8*4,R-60M*2,FAB-250*4", - "name": "B-8*4,R-60M*2,FAB-250*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2,Fuel*2", - "name": "Kh-29L*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "B-8*4,R-60M*2,Fuel*2", - "name": "B-8*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-60M*2,Fuel*2", - "name": "Kh-29T*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-60M*2", - "name": "BetAB-500*6,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25MR*4,R-60M*2,Fuel*2", - "name": "Kh-25MR*4,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-24*4,R-60M*2,Fuel*2", - "name": "S-24*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh25MPU*2_Kh25ML*2_,R60M*2_Fuel*2", - "name": "Kh25MPU*2_Kh25ML*2_,R60M*2_Fuel*2", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh58*2_Kh25MPU*2_R60M*2_Fuel*2", - "name": "Kh58*2_Kh25MPU*2_R60M*2_Fuel*2", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*16,R-60M*2", - "name": "FAB-250*16,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25ML*4,R-60M*2,Fuel*2", - "name": "Kh-25ML*4,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*4,SPPU-22*2,R-60M*2", - "name": "RBK-500AO*4,SPPU-22*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-24*4,R-60M*2,FAB-250*4", - "name": "S-24*4,R-60M*2,FAB-250*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 1150L", - "quantity": 4 - } - ], - "enabled": true, - "code": "Fuel*4", - "name": "Fuel*4", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500*6,R-60M*2", - "name": "FAB-500*6,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25ML*2,Kh-29L*2,R-60*2", - "name": "Kh-25ML*2,Kh-29L*2,R-60*2", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "su-17.png", - "enabled": true, - "liveries": { - "af standard (worn-out)": { - "name": "af standard (worn-out)", - "countries": [ - "UKR" - ] - }, - "shap limanskoye ab": { - "name": "shap limanskoye ab", - "countries": [ - "UKR" - ] - }, - "af standard (rus)": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard (worn-out) (rus)": { - "name": "af standard (worn-out)", - "countries": [ - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "UKR" - ] - } - }, - "type": "Aircraft", - "description": "Single jet engine, swept wing, 1 crew. Fitter", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-24M": { - "name": "Su-24M", - "coalition": "red", - "label": "Su-24M Fencer", - "era": "Mid Cold War", - "shortLabel": "S24", - "loadouts": [ - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - } - ], - "enabled": true, - "code": "B-8*2,Fuel*2", - "name": "B-8*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*2,Fuel*3", - "name": "B-8*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "B-8*6", - "name": "B-8*6", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "BetAB-500*4,R-60M*2", - "name": "BetAB-500*4,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "FAB-100*24", - "name": "FAB-100*24", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-1500*2,R-60M*2", - "name": "FAB-1500*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 8 - } - ], - "enabled": true, - "code": "FAB-250*8", - "name": "FAB-250*8", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "FAB-500*4,R-60M*2", - "name": "FAB-500*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel*3", - "name": "Fuel*3", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-1500L - 1500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-1500*2,R-60M*2,Fuel", - "name": "KAB-1500*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - } - ], - "enabled": true, - "code": "KAB-500*4,R-60M*2", - "name": "KAB-500*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - } - ], - "enabled": true, - "code": "Kh-25ML*4", - "name": "Kh-25ML*4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", - "quantity": 4 - } - ], - "enabled": true, - "code": "Kh-25MR*4", - "name": "Kh-25MR*4", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2", - "name": "Kh-29L*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-60M*2", - "name": "Kh-29T*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-31A*2,R-60M*2", - "name": "Kh-31A*2,R-60M*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31A*2,R-60M*2,Fuel", - "name": "Kh-31A*2,R-60M*2,Fuel", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-59M*2,R-60M*2,Fuel", - "name": "Kh-59M*2,R-60M*2,Fuel", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh25MPU*2_Kh25ML*2_L-081", - "name": "Kh25MPU*2_Kh25ML*2_L-081", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh31P*2_Kh25ML*2_L-081", - "name": "Kh31P*2_Kh25ML*2_L-081", - "roles": [ - "SEAD", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh58*2_Kh25ML*2_L-081", - "name": "Kh58*2_Kh25ML*2_L-081", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "RBK-250*8", - "name": "RBK-250*8", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "RBK-500AO*4,R-60M*2", - "name": "RBK-500AO*4,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-24*2,Fuel*3", - "name": "S-24*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-24*4", - "name": "S-24*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-25*2,Fuel*3", - "name": "S-25*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*4", - "name": "S-25*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-13*2,Fuel*3", - "name": "UB-13*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-13*4", - "name": "UB-13*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-13*4,FAB-500*2", - "name": "UB-13*4,FAB-500*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "Fuel tank 3000L", - "quantity": 2 - }, - { - "name": "Fuel tank 2000L", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-32*2,Fuel*3", - "name": "UB-32*2,Fuel*3", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-32*4", - "name": "UB-32*4", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "UB-32*4,FAB-250*4", - "name": "UB-32*4,FAB-250*4", - "roles": [ - "Strike" - ] - } - ], - "filename": "su-24.png", - "enabled": true, - "liveries": { - "syrian air force": { - "name": "Syrian Air Force", - "countries": [ - "SYR" - ] - }, - "iran air force": { - "name": "Iran Air Force", - "countries": [ - "IRN" - ] - }, - "algerian af kx-12": { - "name": "Algerian AF KX-12", - "countries": [ - "DZA" - ] - }, - "ukrainian air force standard": { - "name": "Ukrainian Air Force", - "countries": [ - "UKR" - ] - }, - "kazakhstan air force": { - "name": "600th Airbase Kazakhstan", - "countries": [ - "KAZ" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "SUN", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swing wing, 2 crew. Fencer", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-25": { - "name": "Su-25", - "coalition": "red", - "label": "Su-25T Frogfoot", - "era": "Late Cold War", - "shortLabel": "S25", - "loadouts": [ - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 2 - } - ], - "enabled": true, - "code": "2-25L*2, KH-25ML*2, RBK-500*2, B-8MI*2, R-60M*2", - "name": "2-25L*2, KH-25ML*2, RBK-500*2, B-8MI*2, R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-60M*2,Fuel*2", - "name": "BetAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "BetAB-500ShP*8,R-60M*2", - "name": "BetAB-500ShP*8,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100*16,R-60M*2,Fuel*2", - "name": "FAB-100*16,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 8 - } - ], - "enabled": true, - "code": "FAB-100*32,R-60M*2", - "name": "FAB-100*32,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", - "name": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*6,R-60M*2,Fuel*2", - "name": "FAB-250*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500*6,R-60M*2,Fuel*2", - "name": "FAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25*4,Kh-29T*2,R-60*2", - "name": "Kh-25*4,Kh-29T*2,R-60*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-25ML*4,R-60M*2,Fuel*2", - "name": "Kh-25ML*4,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*2,R-60M*2,Fuel*2", - "name": "Kh-29L*2,Kh-25ML*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,R-60M*2", - "name": "Kh-29L*2,Kh-25ML*4,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", - "name": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-60M*2,Fuel*2", - "name": "Kh-29L*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", - "name": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "RBK-250*4,S-8KOM*80,R-60M*2", - "name": "RBK-250*4,S-8KOM*80,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "RBK-250*8,R-60M*2", - "name": "RBK-250*8,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", - "name": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-60M*2,Fuel*2", - "name": "RBK-500AO*6,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25*6,R-60M*2,Fuel*2", - "name": "S-25*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 6 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25*6,SPPU-22*2,R-60M*2", - "name": "S-25*6,SPPU-22*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25L*6,R-60*2,Fuel*2", - "name": "S-25L*6,R-60*2,Fuel*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "S-25L*6,UB-13*2,R-60M*2", - "name": "S-25L*6,UB-13*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-8KOM*120,R-60M*2,Fuel*2", - "name": "S-8KOM*120,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8TsM SM Orange", - "quantity": 8 - } - ], - "enabled": true, - "code": "S-8TsM*160,R-60*2", - "name": "S-8TsM*160,R-60*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "SAB-100*8,R-60*2", - "name": "SAB-100*8,R-60*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-13*6,R-60M*2,Fuel*2", - "name": "UB-13*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - } - ], - "filename": "su-25.png", - "enabled": false, - "liveries": { - "broken camo scheme #2 (native). 452th shap": { - "name": "broken camo scheme #2 (native). 452th shap.", - "countries": [ - "UKR" - ] - }, - "broken camo scheme #1 (native). 299th oshap": { - "name": "broken camo scheme #1 (native). 299th oshap.", - "countries": [ - "UKR" - ] - }, - "field camo scheme #1 (native)": { - "name": "field camo scheme #1 (native)", - "countries": [ - "SUN", - "RUS" - ] - }, - "field camo scheme #1 (native)01": { - "name": "field camo scheme #1 (native)", - "countries": [ - "GRG" - ] - }, - "haf camo": { - "name": "Hellenic Airforce - Camo (Fictional)", - "countries": [ - "GRC" - ] - }, - "`scorpion` demo scheme (native)": { - "name": "`scorpion` demo scheme (native)", - "countries": [ - "GRG" - ] - }, - "abkhazian air force": { - "name": "Abkhazian Air Force", - "countries": [ - "ABH" - ] - }, - "field camo scheme #3 (worn-out). 960th shap": { - "name": "field camo scheme #3 (worn-out). 960th shap.", - "countries": [ - "RUS" - ] - }, - "petal camo scheme #1 (native). 299th brigade": { - "name": "petal camo scheme #1 (native). 299th brigade.", - "countries": [ - "UKR" - ] - }, - "petal camo scheme #2 (native). 299th brigade": { - "name": "petal camo scheme #2 (native). 299th brigade.", - "countries": [ - "UKR" - ] - }, - "algerian af desert fictional": { - "name": "Algerian AF Desert Fictional", - "countries": [ - "DZA" - ] - }, - "forest camo scheme #1 (native)": { - "name": "forest camo scheme #1 (native)", - "countries": [ - "RUS" - ] - }, - "irgc 54": { - "name": "IRGC 54", - "countries": [ - "IRN" - ] - }, - "field camo scheme #2 (native). 960th shap": { - "name": "field camo scheme #2 (native). 960th shap.", - "countries": [ - "RUS" - ] - }, - "haf aegean ghost": { - "name": "Hellenic Airforce - Aegean Ghost (Fictional)", - "countries": [ - "GRC" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Frogfoot", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-25T": { - "name": "Su-25T", - "coalition": "red", - "label": "Su-25T Frogfoot", - "era": "Late Cold War", - "shortLabel": "S25", - "loadouts": [ - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "name": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 2 - }, - { - "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "name": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-60M*2,Fuel*2", - "name": "BetAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 8 - } - ], - "enabled": true, - "code": "BetAB-500ShP*8,R-60M*2", - "name": "BetAB-500ShP*8,R-60M*2", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-100*16,R-60M*2,Fuel*2", - "name": "FAB-100*16,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", - "quantity": 8 - } - ], - "enabled": true, - "code": "FAB-100*32,R-60M*2", - "name": "FAB-100*32,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "SAB-100MN - 100 kg Illumination Bomb", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,SPPU-22*2,SAB-100*2,R-60M*2", - "name": "FAB-250*4,SPPU-22*2,SAB-100*2,R-60M*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-250*6,R-60M*2,Fuel*2", - "name": "FAB-250*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "FAB-500*6,R-60M*2,Fuel*2", - "name": "FAB-500*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "Fuel tank 800L Wing", - "quantity": 4 - } - ], - "enabled": true, - "code": "Fuel*4", - "name": "Fuel*4", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "KAB-500Kr - 500kg TV Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", - "name": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", - "name": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,Kh-25ML*4,R-73*2,Mercury LLTV Pod,MPS-410", - "name": "Kh-29L*2,Kh-25ML*4,R-73*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Mercury LLTV Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", - "name": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "KH-29T*2, VIKHR*2, ECM", - "name": "KH-29T*2, VIKHR*2, ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,Kh-25ML*4,R-73*2,MPS-410", - "name": "Kh-29T*2,Kh-25ML*4,R-73*2,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", - "name": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", - "name": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", - "name": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "MPS-410", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", - "quantity": 2 - }, - { - "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "L-081 Fantasmagoria ELINT pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh58*2_Kh25MPU*2_Kh25ML*2_R73*2_L-081_MPS-410", - "name": "Kh58*2_Kh25MPU*2_Kh25ML*2_R73*2_L-081_MPS-410", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", - "quantity": 8 - } - ], - "enabled": true, - "code": "KMGU-2 (AO-2.5RT)*8,R-60M*2", - "name": "KMGU-2 (AO-2.5RT)*8,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", - "name": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 2 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-250*2,UB-32*4,R-60M*2,Fuel*2", - "name": "RBK-250*2,UB-32*4,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "RBK-250*4,UB-32*4,R-60M*2", - "name": "RBK-250*4,UB-32*4,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - } - ], - "enabled": true, - "code": "RBK-250*8,R-60M*2", - "name": "RBK-250*8,R-60M*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", - "name": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-60M*2,Fuel*2", - "name": "RBK-500AO*6,R-60M*2,Fuel*2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", - "name": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-25*6,R-60M*2,Fuel*2", - "name": "S-25*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", - "quantity": 6 - } - ], - "enabled": true, - "code": "S-25L*6,UB-13*2,R-60M*2", - "name": "S-25L*6,UB-13*2,R-60M*2", - "roles": [ - "CAS", - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "S-8KOM*120,R-60M*2,Fuel*2", - "name": "S-8KOM*120,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-60M (AA-8 Aphid) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 6 - }, - { - "name": "Fuel tank 800L Wing", - "quantity": 2 - } - ], - "enabled": true, - "code": "UB-13*6,R-60M*2,Fuel*2", - "name": "UB-13*6,R-60M*2,Fuel*2", - "roles": [ - "Strike" - ] - } - ], - "filename": "su-25.png", - "enabled": true, - "liveries": { - "af standard 2": { - "name": "af standard 2", - "countries": [ - "SUN", - "RUS" - ] - }, - "algerian af grey ku-02": { - "name": "Algerian AF Grey KU-02", - "countries": [ - "DZA" - ] - }, - "su-25t test scheme": { - "name": "su-25t test scheme", - "countries": [ - "RUS" - ] - }, - "haf - fictional": { - "name": "Hellenic Airforce (Fictional)", - "countries": [ - "GRC" - ] - }, - "algerian af trainer ku-04": { - "name": "Algerian AF Trainer KU-04", - "countries": [ - "DZA" - ] - }, - "algerian af grey ku-01": { - "name": "Algerian AF Grey KU-01", - "countries": [ - "DZA" - ] - }, - "af standard 101": { - "name": "af standard 1", - "countries": [ - "GRG" - ] - }, - "algerian af desert ku-03": { - "name": "Algerian AF Desert KU-03", - "countries": [ - "DZA" - ] - }, - "af standard 1": { - "name": "af standard 1", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "GRG" - ] - } - }, - "type": "Attack", - "description": "2 jet engine, swept wing, 1 crew. Frogfoot", - "abilities": "Fox 2 and gun, Dumb bombs, rockets, SEAD and ATGMs, Subsonic", - "canTargetPoint": true - }, - "Su-27": { - "name": "Su-27", - "coalition": "red", - "label": "Su-27 Flanker", - "era": "Late Cold War", - "shortLabel": "S27", - "loadouts": [ - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": " CAS S-25 Rockets", - "name": " CAS S-25 Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500ShP*6,R-73*2,ECM", - "name": "BetAB-500ShP*6,R-73*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets", - "name": "CAS S-13 Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-25 Rockets + FAB-500 Bombs", - "name": "CAS S-25 Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets", - "name": "CAS S-8KOM Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-100 Bombs", - "name": "CAS S-8KOM Rockets + FAB-100 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 5 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - }, - { - "name": "MBD3-U6-68 with 3 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-250 Bombs", - "name": "CAS S-8KOM Rockets + FAB-250 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + FAB-500 Bombs", - "name": "CAS S-8KOM Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 3 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + KMGU PTAB", - "name": "CAS S-8KOM Rockets + KMGU PTAB", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", - "name": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-500 PTAB1", - "name": "CAS S-8KOM Rockets + RBK-500 PTAB1", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM Rockets + RBK-500 PTAB10", - "name": "CAS S-8KOM Rockets + RBK-500 PTAB10", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets", - "name": "CAS S-8OFP Rockets", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets + FAB-100 Bombs", - "name": "CAS S-8OFP Rockets + FAB-100 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP Rockets + FAB-500 Bombs", - "name": "CAS S-8OFP Rockets + FAB-500 Bombs", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,ECM", - "name": "FAB-500*6,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", - "quantity": 5 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KMGU-2 (AO-2.5RT)*5,R-73*2,ECM", - "name": "KMGU-2 (AO-2.5RT)*5,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", - "quantity": 5 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KMGU-2 (PTAB-2.5KO)*5,R-73*2,ECM", - "name": "KMGU-2 (PTAB-2.5KO)*5,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27ER*4,R-27ET*2,ECM", - "name": "R-73*2,R-27ER*4,R-27ET*2,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27ER*6,ECM", - "name": "R-73*2,R-27ER*6,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*4,ECM", - "name": "R-73*4,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4,R-27ER*4,R-27ET*2", - "name": "R-73*4,R-27ER*4,R-27ET*2", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-27ER*6", - "name": "R-73*4,R-27ER*6", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*6", - "name": "R-73*6", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-13*10,RBK-500AO*2,FAB-500*2,R-73*2,ECM", - "name": "S-13*10,RBK-500AO*2,FAB-500*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*2,FAB-500*4,R-73*4", - "name": "S-25*2,FAB-500*4,R-73*4", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-25*4, FAB-500*4, R-73*2, ECM", - "name": "S-25*4, FAB-500*4, R-73*2, ECM", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "su-27.png", - "enabled": true, - "liveries": { - "kubinka afb (russian knights old)": { - "name": "Kubinka AFB (Russian Knights Old)", - "countries": [ - "RUS" - ] - }, - "mirgorod afb (831th brigade)": { - "name": "Mirgorod AFB (831th brigade)", - "countries": [ - "UKR" - ] - }, - "lypetsk afb (falcons of russia)": { - "name": "Lypetsk AFB (Falcons of Russia)", - "countries": [ - "RUS" - ] - }, - "hotilovo afb": { - "name": "Hotilovo AFB", - "countries": [ - "RUS" - ] - }, - "plaaf k2s new parade": { - "name": "PLAAF K2S new parade", - "countries": [ - "CHN" - ] - }, - "plaaf standard": { - "name": "PLAAF Standard", - "countries": [ - "CHN" - ] - }, - "algerian af grey 04": { - "name": "Algerian AF GREY 04", - "countries": [ - "DZA" - ] - }, - "air force standard early": { - "name": "Air Force Standard Early", - "countries": [ - "SUN", - "RUS" - ] - }, - "air force ukraine standard": { - "name": "Air Force Ukraine Standard", - "countries": [ - "UKR" - ] - }, - "planaf hh8s": { - "name": "PLANAF HH8S", - "countries": [ - "CHN" - ] - }, - "ozerne afb (9th brigade)": { - "name": "Ozerne AFB (9th brigade)", - "countries": [ - "UKR" - ] - }, - "air force ukraine standard early": { - "name": "Air Force Ukraine Standard Early", - "countries": [ - "UKR" - ] - }, - "algerian af blue 02": { - "name": "Algerian AF Blue 02", - "countries": [ - "DZA" - ] - }, - "plaaf k1s old": { - "name": "PLAAF K1S old", - "countries": [ - "CHN" - ] - }, - "m gromov fri": { - "name": "M Gromov FRI", - "countries": [ - "RUS" - ] - }, - "plaaf k33s": { - "name": "PLAAF K33S", - "countries": [ - "CHN" - ] - }, - "air force standard": { - "name": "Air Force Standard", - "countries": [ - "SUN", - "RUS" - ] - }, - "plaaf k2s old": { - "name": "PLAAF K2S old", - "countries": [ - "CHN" - ] - }, - "chkalovsk afb (689 gviap)": { - "name": "Chkalovsk AFB (689 GvIAP)", - "countries": [ - "RUS" - ] - }, - "kazakhstan air defense forces": { - "name": "Kazakhstan Air Defense Forces", - "countries": [ - "KAZ" - ] - }, - "haf aegean ghost": { - "name": "Hellenic Airforce - Aegean Ghost (Fictional)", - "countries": [ - "GRC" - ] - }, - "besovets afb": { - "name": "Besovets AFB", - "countries": [ - "RUS" - ] - }, - "kilpyavr afb (maresyev)": { - "name": "Kilpyavr AFB (Maresyev)", - "countries": [ - "RUS" - ] - }, - "mirgorod afb (digital camo)": { - "name": "Mirgorod AFB (Digital camo)", - "countries": [ - "UKR" - ] - }, - "plaaf k2s new": { - "name": "PLAAF K2S new", - "countries": [ - "CHN" - ] - }, - "air force standard old": { - "name": "Air Force Standard old", - "countries": [ - "SUN", - "RUS" - ] - }, - "lodeynoye pole afb (177 iap)": { - "name": "Lodeynoye pole AFB (177 IAP)", - "countries": [ - "RUS" - ] - }, - "kubinka afb (russian knights)": { - "name": "Kubinka AFB (Russian Knights)", - "countries": [ - "RUS" - ] - }, - "lypetsk afb (shark)": { - "name": "Lypetsk AFB (Shark)", - "countries": [ - "RUS" - ] - }, - "besovets afb 2 squadron": { - "name": "Besovets AFB 2 squadron", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-30": { - "name": "Su-30", - "coalition": "red", - "label": "Su-30 Super Flanker", - "era": "Late Cold War", - "shortLabel": "S30", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-77*6,ECM", - "name": "R-73*2,R-77*6,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27T*2,R-27R*4", - "name": "R-73*2,R-27T*2,R-27R*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-73*2,ECM", - "name": "RBK-500AO*6,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31P*2,Kh-31A*2,R-73*2,R-77*2,ECM", - "name": "Kh-31P*2,Kh-31A*2,R-73*2,R-77*2,ECM", - "roles": [ - "Antiship Strike", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4,R-27T*2,R-27R*4", - "name": "R-73*4,R-27T*2,R-27R*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-77*2,Kh-35*2,ECM", - "name": "R-73*2,R-77*2,Kh-35*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-35*2,Kh-31P*2,R-73*2,R-77*2,ECM", - "name": "Kh-35*2,Kh-31P*2,R-73*2,R-77*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,B-8*2,R-73*2,ECM", - "name": "FAB-250*4,B-8*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-1500L - 1500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-1500*2,R-73*2,R-77*2,ECM", - "name": "KAB-1500*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*6,R-73*2,ECM", - "name": "RBK-250*6,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-77*6", - "name": "R-73*4,R-77*6", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,S-25*2,R-73*2,ECM", - "name": "FAB-250*4,S-25*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27R*2,R-27ER*4,ECM", - "name": "R-73*2,R-27R*2,R-27ER*4,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27T*2,R-27ER*2,R-77*2,ECM", - "name": "R-73*2,R-27T*2,R-27ER*2,R-77*2,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-1500*2,R-73*2,R-77*2,ECM", - "name": "FAB-1500*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27T (AA-10 Alamo B) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-27T*2,R-27ER*2,R-77*2", - "name": "R-73*4,R-27T*2,R-27ER*2,R-77*2", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-59M*2,R-73*2,R-77*2,ECM", - "name": "Kh-59M*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,ECM", - "name": "FAB-500*6,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2,R-27ER*4", - "name": "R-73*4,R-27R*2,R-27ER*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*4,R-73*2,R-77*2,ECM", - "name": "Kh-29L*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-73*2,ECM", - "name": "BetAB-500*6,R-73*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4", - "name": "R-73*4", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*4,UB-13*2,R-73*2,ECM", - "name": "FAB-250*4,UB-13*2,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-77*4,R-27ER*2,ECM", - "name": "R-73*2,R-77*4,R-27ER*2,ECM", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*4,R-73*2,R-77*2,ECM", - "name": "KAB-500*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*6,R-73*2,ECM", - "name": "FAB-250*6,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 4 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 2 - } - ], - "enabled": true, - "code": "R-73*4,R-77*4,R-27ER*2", - "name": "R-73*4,R-77*4,R-27ER*2", - "roles": [ - "Escort", - "CAP", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*4,R-73*2,R-77*2,ECM", - "name": "Kh-29T*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 4 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31P*4,R-73*2,R-77*2,ECM", - "name": "Kh-31P*4,R-73*2,R-77*2,ECM", - "roles": [ - "SEAD" - ] - } - ], - "filename": "su-34.png", - "enabled": true, - "liveries": { - "af standard last": { - "name": "af standard last", - "countries": [ - "RUS" - ] - }, - "`russian knights` team #25": { - "name": "`russian knights` team #25", - "countries": [ - "RUS" - ] - }, - "adf 148th ctc savasleyka ab": { - "name": "adf 148th ctc savasleyka ab", - "countries": [ - "RUS" - ] - }, - "`desert` test paint scheme": { - "name": "`desert` test paint scheme", - "countries": [ - "RUS" - ] - }, - "`test-pilots` team #597": { - "name": "`test-pilots` team #597", - "countries": [ - "RUS" - ] - }, - "`snow` test paint scheme": { - "name": "`snow` test paint scheme", - "countries": [ - "RUS" - ] - }, - "af standard early": { - "name": "af standard early", - "countries": [ - "SUN", - "RUS" - ] - }, - "af standard last (worn-out)": { - "name": "af standard last (worn-out)", - "countries": [ - "RUS" - ] - }, - "af standard early (worn-out)": { - "name": "af standard early (worn-out)", - "countries": [ - "RUS" - ] - }, - "af standard": { - "name": "af standard", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-33": { - "name": "Su-33", - "coalition": "red", - "label": "Su-33 Navy Flanker", - "era": "Late Cold War", - "shortLabel": "S33", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250*6,R-73*2,R-27R*2,ECM", - "name": "RBK-250*6,R-73*2,R-27R*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - } - ], - "enabled": true, - "code": "R-73*4", - "name": "R-73*4", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-27R*2,R-27ER*6", - "name": "R-73*4,R-27R*2,R-27ER*6", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27ET*2,R-27ER*6,ECM", - "name": "R-73*2,R-27ET*2,R-27ER*6,ECM", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - } - ], - "enabled": true, - "code": "R-73*4,R-27ET*2,R-27ER*6", - "name": "R-73*4,R-27ET*2,R-27ER*6", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*6,R-73*2,R-27R*2,ECM", - "name": "FAB-250*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "R-73*2,R-27R*2,R-27ER*6,ECM", - "name": "R-73*2,R-27R*2,R-27ER*6,ECM", - "roles": [ - "CAP", - "Escort", - "CAP", - "CAP" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*6,R-73*2,R-27R*2,ECM", - "name": "BetAB-500*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500AO*6,R-73*2,R-27R*2,ECM", - "name": "RBK-500AO*6,R-73*2,R-27R*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-13*4,FAB-250*4,R-73*2,ECM", - "name": "UB-13*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "S-25*4,FAB-250*4,R-73*2,ECM", - "name": "S-25*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 6 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*6,R-73*2,R-27R*2,ECM", - "name": "FAB-500*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*4,FAB-250*4,R-73*2,ECM", - "name": "B-8*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", - "quantity": 4 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "S-25*4,FAB-500*4,R-73*4", - "name": "S-25*4,FAB-500*4,R-73*4", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + FAB500", - "name": "CAS S-8KOM rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8OFP rockets + FAB500", - "name": "CAS S-8OFP rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets + FAB500", - "name": "CAS S-13 Rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-13 Rockets + FAB100", - "name": "CAS S-13 Rockets + FAB100", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", - "quantity": 2 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + FAB250", - "name": "CAS S-8KOM rockets + FAB250", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-25 Rockets + FAB500", - "name": "CAS S-25 Rockets + FAB500", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + RBK500 PTAB10", - "name": "CAS S-8KOM rockets + RBK500 PTAB10", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 4 - }, - { - "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 2 - }, - { - "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", - "quantity": 4 - } - ], - "enabled": true, - "code": "CAS S-8KOM rockets + RBK500 PTAB1", - "name": "CAS S-8KOM rockets + RBK500 PTAB1", - "roles": [ - "CAS" - ] - } - ], - "filename": "su-34.png", - "enabled": true, - "liveries": { - "t-10k-9 test paint scheme": { - "name": "t-10k-9 test paint scheme", - "countries": [ - "RUS" - ] - }, - "279th kiap 1st squad navy": { - "name": "Navy, 279th kiap, 1st squad", - "countries": [ - "RUS" - ] - }, - "aaf blue 68": { - "name": "Algerian AF BLUE No 68", - "countries": [ - "DZA" - ] - }, - "haf - aegean ghost": { - "name": "Hellenic Airforce - Aegean Ghost (Fictional)", - "countries": [ - "GRC" - ] - }, - "279th kiap 2nd squad syria 2017": { - "name": "Syria 2017, 279th kiap, 2nd squad", - "countries": [ - "RUS" - ] - }, - "aaf grey 12": { - "name": "Algerian AF GREY No 12", - "countries": [ - "DZA" - ] - }, - "t-10k-5 test paint scheme": { - "name": "t-10k-5 test paint scheme", - "countries": [ - "RUS" - ] - }, - "279th kiap 1st squad syria 2017": { - "name": "Syria 2017, 279th kiap, 1st squad", - "countries": [ - "RUS" - ] - }, - "279th kiap 2nd squad navy": { - "name": "Navy, 279th kiap, 2nd squad", - "countries": [ - "RUS" - ] - }, - "t-10k-1 test paint scheme": { - "name": "t-10k-1 test paint scheme", - "countries": [ - "SUN", - "RUS" - ] - }, - "plan carrier air wings j-15": { - "name": "PLAN Carrier Air Wings J-15", - "countries": "All" - } - }, - "type": "Aircraft", - "description": "2 jet engine, swept wing, 1 crew. Flanker", - "abilities": "Drogue AAR, Carrier", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Su-34": { - "name": "Su-34", - "coalition": "red", - "label": "Su-34 Hellduck", - "era": "Modern", - "shortLabel": "S34", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", - "quantity": 4 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "UB-13*4,FAB-250*4,R-73*2,ECM", - "name": "UB-13*4,FAB-250*4,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-100 - 100kg GP Bomb LD", - "quantity": 4 - }, - { - "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-100*28,R-73*2,ECM", - "name": "FAB-100*28,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "BetAB-500*8,R-73*2,ECM", - "name": "BetAB-500*8,R-73*2,ECM", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*4,R-73*2,R-77*2,ECM", - "name": "Kh-29L*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "KAB-500LG - 500kg Laser Guided Bomb", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-500*4,R-73*2,R-77*2,ECM", - "name": "KAB-500*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", - "name": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-250 - 250kg GP Bomb LD", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*8,R-73*2,ECM", - "name": "FAB-250*8,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "ECM", - "name": "ECM", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 4 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*4,R-73*2,R-77*2,ECM", - "name": "Kh-29T*4,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "RBK-500 PTAB-10-5*8,R-73*2,ECM", - "name": "RBK-500 PTAB-10-5*8,R-73*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", - "quantity": 3 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-1500*3,R-73*2,R-77*2,ECM", - "name": "FAB-1500*3,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-59M*2,R-73*2,R-77*2,ECM", - "name": "Kh-59M*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", - "quantity": 4 - }, - { - "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "B-8*6,R-73*2,R-27R*2,ECM", - "name": "B-8*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "FAB-500 M-62 - 500kg GP Bomb LD", - "quantity": 8 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*8,R-73*2,ECM", - "name": "FAB-500*8,R-73*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "R-77 (AA-12 Adder) - Active Rdr", - "quantity": 2 - }, - { - "name": "KAB-1500L - 1500kg Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "KAB-1500*2,R-73*2,R-77*2,ECM", - "name": "KAB-1500*2,R-73*2,R-77*2,ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29T*4,R-73*2,R-27R*2,ECM", - "name": "Kh-29T*4,R-73*2,R-27R*2,ECM", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 4 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 2 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31A*4,Kh-31P*2,R-73*2,R-27R*2,ECM", - "name": "Kh-31A*4,Kh-31P*2,R-73*2,R-27R*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", - "quantity": 6 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31A*6,R-73*2,R-27R*2,ECM", - "name": "Kh-31A*6,R-73*2,R-27R*2,ECM", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-31P*4,R-73*2,R-27R*2,ECM", - "name": "Kh-31P*4,R-73*2,R-27R*2,ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "L005 Sorbtsiya ECM pod (left)", - "quantity": 1 - }, - { - "name": "R-73 (AA-11 Archer) - Infra Red", - "quantity": 2 - }, - { - "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", - "quantity": 4 - }, - { - "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", - "quantity": 2 - }, - { - "name": "L005 Sorbtsiya ECM pod (right)", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-29L*4,R-73*2,R-27R*2,ECM", - "name": "Kh-29L*4,R-73*2,R-27R*2,ECM", - "roles": [ - "CAS" - ] - } - ], - "filename": "su-34.png", - "enabled": true, - "liveries": { - "russian air force": { - "name": "1 Russian Air Force", - "countries": [ - "RUS" - ] - }, - "russian air force old": { - "name": "Russian Air Force Old", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 Jet engine, swept wing, 2 crew, all weather fighter and strike. Fullback", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tornado GR4": { - "name": "Tornado GR4", - "coalition": "blue", - "label": "Tornado GR4", - "era": "Late Cold War", - "shortLabel": "GR4", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M*2, Fuel*2, ECM", - "name": "AIM-9M*2, Fuel*2, ECM", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "ALARM", - "quantity": 4 - }, - { - "name": "", - "quantity": 4 - } - ], - "enabled": true, - "code": "ALARM*4, Fuel*2, ECM", - "name": "ALARM*4, Fuel*2, ECM", - "roles": [ - "SEAD" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", - "name": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", - "roles": [ - "Strike", - "FAC-A", - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BL-755 CBU - 450kg, 147 Frag/Pen bomblets", - "quantity": 4 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "BL755*4, AIM-9M*2, Fuel*2, ECM", - "name": "BL755*4, AIM-9M*2, Fuel*2, ECM", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Sea Eagle - ASM", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "Sea Eagle*2, AIM-9M*2, Fuel*2, ECM", - "name": "Sea Eagle*2, AIM-9M*2, Fuel*2, ECM", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "tornado.png", - "enabled": true, - "liveries": { - "no. 14 squadron raf lossiemouth ab (morayshire)": { - "name": "no. 14 squadron raf lossiemouth ab (morayshire)", - "countries": [ - "UK" - ] - }, - "o of ii (ac) squadron raf marham": { - "name": "o of ii (ac) squadron raf marham", - "countries": [ - "UK" - ] - }, - "bb of 14 squadron raf lossiemouth": { - "name": "bb of 14 squadron raf lossiemouth", - "countries": [ - "UK" - ] - }, - "no. 9 squadron raf marham ab (norfolk)": { - "name": "no. 9 squadron raf marham ab (norfolk)", - "countries": [ - "UK" - ] - }, - "no. 12 squadron raf lossiemouth ab (morayshire)": { - "name": "no. 12 squadron raf lossiemouth ab (morayshire)", - "countries": [ - "UK" - ] - }, - "no. 617 squadron raf lossiemouth ab (morayshire)": { - "name": "no. 617 squadron raf lossiemouth ab (morayshire)", - "countries": [ - "UK" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swing wing, 2 crew, all weather strike.", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tornado IDS": { - "name": "Tornado IDS", - "coalition": "blue", - "label": "Tornado IDS", - "era": "Late Cold War", - "shortLabel": "IDS", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Kormoran - ASM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kormoran*2,AIM-9*2,Fuel*2", - "name": "Kormoran*2,AIM-9*2,Fuel*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-16 - 1000lb Laser Guided Bomb", - "quantity": 2 - } - ], - "enabled": true, - "code": "GBU-16*2,AIM-9*2,Fuel*2", - "name": "GBU-16*2,AIM-9*2,Fuel*2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - } - ], - "enabled": true, - "code": "Fuel*2", - "name": "Fuel*2", - "roles": [ - "FAC-A" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 4 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-88*4,AIM-9*2,ECM", - "name": "AGM-88*4,AIM-9*2,ECM", - "roles": [ - "SEAD", - "CAS" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 1 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "Sky-Shadow ECM Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AGM-88*2,AIM-9*2,Fuel*2,ECM", - "name": "AGM-88*2,AIM-9*2,Fuel*2,ECM", - "roles": [ - "SEAD", - "CAS" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "Kormoran - ASM", - "quantity": 4 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kormoran*4,AIM-9*2", - "name": "Kormoran*4,AIM-9*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Kormoran - ASM", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kormoran*2,AIM-9*2,AGM-88*2", - "name": "Kormoran*2,AIM-9*2,AGM-88*2", - "roles": [ - "Antiship Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "BOZ-107 - Countermeasure Dispenser", - "quantity": 2 - }, - { - "name": "TORNADO Fuel tank", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 - 500lb GP Bomb LD", - "quantity": 4 - } - ], - "enabled": true, - "code": "Mk-82*4,AIM-9*2,Fuel*2", - "name": "Mk-82*4,AIM-9*2,Fuel*2", - "roles": [ - "Strike" - ] - } - ], - "filename": "tornado.png", - "enabled": true, - "liveries": { - "ita tornado black": { - "name": "Tornado Black", - "countries": [ - "ITA" - ] - }, - "marinefliegergeschwader 2 eggebek ab marineflieger": { - "name": "marinefliegergeschwader 2 eggebek ab marineflieger", - "countries": [ - "GER" - ] - }, - "jagdbombergeschwader 31 `boelcke` norvenich ab luftwaffe": { - "name": "jagdbombergeschwader 31 `boelcke` norvenich ab luftwaffe", - "countries": [ - "GER" - ] - }, - "ita tornado mm7042": { - "name": "Tornado MM7042", - "countries": [ - "ITA" - ] - }, - "ita tornado mm55004": { - "name": "Tornado MM55004", - "countries": [ - "ITA" - ] - }, - "aufklarungsgeschwader 51 `immelmann` jagel ab luftwaffe": { - "name": "aufklarungsgeschwader 51 `immelmann` jagel ab luftwaffe", - "countries": [ - "GER" - ] - }, - "jagdbombergeschwader 33 buchel ab no. 43+19 experimental scheme": { - "name": "jagdbombergeschwader 33 buchel ab no. 43+19 experimental scheme", - "countries": [ - "GER" - ] - }, - "jagdbombergeschwader 32 lechfeld ab luftwaffe": { - "name": "jagdbombergeschwader 32 lechfeld ab luftwaffe", - "countries": [ - "GER" - ] - }, - "ita tornado (sesto stormo diavoli rossi)": { - "name": "Tornado (Sesto Stormo Diavoli Rossi)", - "countries": [ - "ITA" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swing wing, 2 crew, all weather strike.", - "abilities": "Drogue AAR", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tu-142": { - "name": "Tu-142", - "coalition": "red", - "label": "Tu-142 Bear", - "era": "Mid Cold War", - "shortLabel": "142", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "6 x Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-35*6", - "name": "Kh-35*6", - "roles": [ - "Antiship Strike" - ] - } - ], - "filename": "tu-95.png", - "enabled": true, - "liveries": { - "af standard": { - "name": "af standard", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 turboprop, swept wing, 11 crew, bomber. Bear", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tu-160": { - "name": "Tu-160", - "coalition": "red", - "label": "Tu-160 Blackjack", - "era": "Late Cold War", - "shortLabel": "160", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "6 x Kh-65 (AS-15B Kent) - 1250kg, ASM, IN & MCC", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-65*12", - "name": "Kh-65*12", - "roles": [ - "Strike" - ] - } - ], - "filename": "tu-160.png", - "enabled": true, - "liveries": { - "af standard": { - "name": "af standard", - "countries": [ - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 jet engine, swing wing, 4 crew bomber. Blackjack", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tu-22M3": { - "name": "Tu-22M3", - "coalition": "red", - "label": "Tu-22M3 Backfire", - "era": "Late Cold War", - "shortLabel": "T22", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-22N", - "name": "Kh-22N", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", - "quantity": 2 - } - ], - "enabled": true, - "code": "Kh-22N*2", - "name": "Kh-22N*2", - "roles": [ - "Antiship Strike" - ] - }, - { - "items": [ - { - "name": "MBD3-U9M with 9 x FAB-250 - 250kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "33 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*69", - "name": "FAB-250*69", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "33 x FAB-500 M-62 - 500kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*33", - "name": "FAB-500*33", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "MBD3-U9M with 9 x FAB-250 - 250kg GP Bombs LD", - "quantity": 4 - }, - { - "name": "33 x FAB-500 M-62 - 500kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-500*33, FAB-250*36", - "name": "FAB-500*33, FAB-250*36", - "roles": [ - "Strike", - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "33 x FAB-250 - 250kg GP Bombs LD", - "quantity": 1 - } - ], - "enabled": true, - "code": "FAB-250*33", - "name": "FAB-250*33", - "roles": [ - "Strike", - "Runway Attack" - ] - } - ], - "filename": "tu-22.png", - "enabled": true, - "liveries": { - "af standard": { - "name": "af standard", - "countries": [ - "UKR", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "2 jet engine, swing wing, 4 crew bomber. Backfire", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "Tu-95MS": { - "name": "Tu-95MS", - "coalition": "red", - "label": "Tu-95MS Bear", - "era": "Mid Cold War", - "shortLabel": "T95", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - }, - { - "items": [ - { - "name": "6 x Kh-65 (AS-15B Kent) - 1250kg, ASM, IN & MCC", - "quantity": 1 - } - ], - "enabled": true, - "code": "Kh-65*6", - "name": "Kh-65*6", - "roles": [ - "Strike" - ] - } - ], - "filename": "tu-95.png", - "enabled": true, - "liveries": { - "af standard": { - "name": "af standard", - "countries": [ - "UKR", - "RUS" - ] - } - }, - "type": "Aircraft", - "description": "4 turboprop, swept wing, 6 crew, bomber. Bear", - "abilities": "", - "acquisitionRange": "", - "engagementRange": "", - "canTargetPoint": true, - "canRearm": false - }, - "F-15ESE": { - "name": "F-15ESE", - "coalition": "", - "label": "F-15E Strike Eagle", - "shortLabel": "15E", - "era": "", - "enabled": true, - "loadouts": [ - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "BDU-50LGB * 2", - "quantity": 2 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", - "name": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "Mk-82 * 6", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", - "name": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "Fuel tank 610 gal", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "BLU-107 * 6", - "quantity": 2 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C x 2, AIM-9M x 2, BLU-107 x 12, TGP, NVP, Fuel Tank", - "name": "AIM-120C x 2, AIM-9M x 2, BLU-107 x 12, TGP, NVP, Fuel Tank", - "roles": [ - "Runway Attack" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-12 * 4", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "GBU-10 * 2", - "quantity": 1 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", - "name": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "GBU-12 * 4", - "quantity": 2 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "GBU-12 - 500lb Laser Guided Bomb", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 9, TGP, NVP, FUel Tank x 2", - "name": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 9, TGP, NVP, FUel Tank x 2", - "roles": [ - "Strike" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", - "name": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", - "roles": [ - "Reconnaissance" - ] - }, - { - "items": [ - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 3 - }, - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 2 - }, - { - "name": "Mk-82 AIR * 6", - "quantity": 2 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", - "name": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - } - ], - "enabled": true, - "code": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", - "name": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 4 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "CBU-87 * 6", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 2 - } - ], - "enabled": true, - "code": "AIM-9M x 4, AIM-120C x 2, CBU-87 x 6, TGP", - "name": "AIM-9M x 4, AIM-120C x 2, CBU-87 x 6, TGP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AIM-7MH Sparrow Semi-Active Radar", - "quantity": 2 - }, - { - "name": "Mk-20 Rockeye * 6", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, AIM-7M x 2, Mk-20 x 2, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, AIM-7M x 2, Mk-20 x 2, NVP, Fuel Tanks x 2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "CBU-87 * 3", - "quantity": 2 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", - "name": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "Mk-20 Rockeye * 6", - "quantity": 2 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", - "roles": [ - "Strike", - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Mk-84 - 2000lb GP Bomb LD", - "quantity": 2 - }, - { - "name": "Mk-82 * 6", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "CBU-97 * 3", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", - "name": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", - "roles": [ - "CAS" - ] - }, - { - "items": [ - { - "name": "AIM-9M Sidewinder IR AAM", - "quantity": 4 - }, - { - "name": "Fuel tank 610 gal", - "quantity": 2 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - } - ], - "enabled": true, - "code": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", - "name": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 3 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - }, - { - "name": "AN/AAQ-14 LANTIRN TGT Pod", - "quantity": 1 - }, - { - "name": "AN/AAQ-13 LANTIRN NAV POD", - "quantity": 1 - } - ], - "enabled": true, - "code": "CATM-9M x 3, AIM-120B", - "name": "CATM-9M x 3, AIM-120B", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "Captive AIM-9M for ACM", - "quantity": 1 - }, - { - "name": "", - "quantity": 1 - }, - { - "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", - "quantity": 1 - } - ], - "enabled": true, - "code": "CATM-9M, CAIM-120", - "name": "CATM-9M, CAIM-120", - "roles": [ - "CAP" - ] - }, - { - "items": [ - { - "name": "", - "quantity": 3 - } - ], - "enabled": true, - "code": "Clean", - "name": "Clean", - "roles": [] - }, - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "Strike" - ] - } - ], - "filename": "f-15.png", - "liveries": { - "usaf 334th eagles fs af89 aim high": { - "name": "USAF 334th Eagles AF89-475 'Aim High'", - "countries": [ - "USA" - ] - }, - "usaf 335th chiefs fs af89 low vis combat": { - "name": "USAF 335th Chiefs AF89 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91 low vis combat": { - "name": "USAF 492nd Madhatters AF91 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 335th chiefs fs af89 high vis clean": { - "name": "USAF 335th Chiefs AF89 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 335th chiefs fs af89-0487 lucky": { - "name": "USAF 335th Chiefs AF89-0487 'Lucky'", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88-1690 darkness falls": { - "name": "USAF 336th Rocketeers AF88-1690 'Darkness Falls'", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af92-366 billy the kid": { - "name": "USAF 391st Bold Tigers AF92-366 'Billy the Kid'", - "countries": [ - "USA" - ] - }, - "idf ra'am, 69 hammer sqn": { - "name": "IDF 69th Hammers Scheme B", - "countries": [ - "ISR" - ] - }, - "usaf 336th rocketeers fs af89 high vis clean": { - "name": "USAF 336th Rocketeers AF89 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af89-496 shadow": { - "name": "USAF 336th Rocketeers AF89-496 'Shadow'", - "countries": [ - "USA" - ] - }, - "usaf 389th thunderbolts fs af90 low vis combat": { - "name": "USAF 389th Thunderbolts AF90 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd mad hatters fs 97-219 75th d-day anniversary": { - "name": "USAF 492nd Madhatters AF97-219 '75th Anniversary D-Day'", - "countries": [ - "USA" - ] - }, - "usaf 334th eagles fs af89 high vis clean": { - "name": "USAF 334th Eagles AF89 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af91-300 leo": { - "name": "USAF 391st Bold Tigers AF91-300 'Leo'", - "countries": [ - "USA" - ] - }, - "usaf 494th panthers fs af01 low vis clean": { - "name": "USAF 494th Panthers AF01 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af97-220 thanos": { - "name": "USAF 492nd Madhatters AF97-220 'Thanos'", - "countries": [ - "USA" - ] - }, - "usaf 48th fw 70th anniversary af92-364 heritage": { - "name": "USAF 48th FW 70th Aniversary AF92-364 Heritage", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88 low vis combat": { - "name": "USAF 336th Rocketeers AF88 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af97-221 low vis combat": { - "name": "USAF 492nd Madhatters AF97-221 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91-315 vader": { - "name": "USAF 492nd Madhatters AF91-315 'Vader'", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91-327 green goblin": { - "name": "USAF 492nd Madhatters AF91-327 'Green Goblin'", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af90-247 kraken": { - "name": "USAF 391st Bold Tigers AF90-247 'kraken'", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88-1700 dragon betty": { - "name": "USAF 336th Rocketeers AF88-1700 'Dragon Betty'", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af89-501": { - "name": "USAF 336th Rocketeers AF89-501", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88 high vis clean": { - "name": "USAF 336th Rocketeers AF88 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 333rd rocketeers fs af87-199 333 fgs": { - "name": "USAF 333rd Lancers AF87-0199 333 FGS", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af90-241 high vis combat": { - "name": "USAF 391st Bold Tigers AF90-241 High Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af96 low vis clean": { - "name": "USAF 492nd Madhatters AF96 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 494th panthers fs af00 low vis combat": { - "name": "USAF 494th Panthers AF00 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91 low vis clean": { - "name": "USAF 492nd Madhatters AF91 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 494th panthers fs af01 low vis combat": { - "name": "USAF 494th Panthers AF01 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af98 low vis clean": { - "name": "USAF 492nd Madhatters AF98 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 17th ws af90 low vis clean": { - "name": "USAF 17th Weapons Squadron AF90 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88-1673 336 fgs": { - "name": "USAF 336th Rocketeers AF88-1673 336 FGS", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af89 low vis combat": { - "name": "USAF 336th Rocketeers AF89 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af91-308 low vis clean": { - "name": "USAF 492nd Madhatters AF91-308 Low Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af98 low vis combat": { - "name": "USAF 492nd Madhatters AF98 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers af90-250 tmota": { - "name": "USAF 391ST Bold Tigers 2005 Tiger Meet of the Americas", - "countries": [ - "USA" - ] - }, - "usaf af86-183 number1": { - "name": "USAF Test AF86-183 'Number 1'", - "countries": [ - "USA" - ] - }, - "usaf 17th wps af90-257": { - "name": "USAF 17th Weapons Squadron AF90-257 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 17th ws af90 high vis clean": { - "name": "USAF 17th Weapons Squadron AF90 High Vis Clean", - "countries": [ - "USA" - ] - }, - "usaf 492nd madhatters fs af96 low vis combat": { - "name": "USAF 492nd Madhatters AF96 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 391st bold tigers fs af90 low vis combat": { - "name": "USAF 391st Bold Tigers AF90 Low Vis Combat", - "countries": [ - "USA" - ] - }, - "usaf 494th panthers fs 91-603 75th d-day anniversary": { - "name": "USAF 494th Panthers AF91-603 '75th Anniversary D-Day'", - "countries": [ - "USA" - ] - }, - "usaf 336th fw mountain home 75 years af87-173": { - "name": "USAF 366th FW 'Mountain Home 75 Years' AF87-0173", - "countries": [ - "USA" - ] - }, - "usaf 336th rocketeers fs af88-1687 mad duck iv": { - "name": "USAF 336th Rocketeers AF88-1687 'Mad Duck IV'", - "countries": [ - "USA" - ] - } - } - }, - "F-14A": { - "name": "F-14A", - "coalition": "", - "era": "", - "label": "F-14A Tomcat", - "shortLabel": "F14", - "type": "F_14A", - "enabled": false, - "liveries": {} - }, - "Su-25TM": { - "name": "Su-25TM", - "coalition": "", - "era": "", - "label": "SU-25TM", - "shortLabel": "S25", - "type": "Su_25TM", - "enabled": false, - "liveries": {} - }, - "Su-24MR": { - "name": "Su-24MR", - "coalition": "", - "era": "", - "label": "Su-24MR Fencer", - "shortLabel": "S24", - "type": "Su_24MR", - "enabled": false, - "liveries": {} - }, - "S-3B": { - "name": "S-3B", - "coalition": "", - "era": "", - "label": "S-3B", - "shortLabel": "S3B", - "type": "S_3B", - "enabled": false, - "liveries": {} - }, - "Mirage 2000-5": { - "name": "Mirage 2000-5", - "coalition": "", - "era": "", - "label": "MIRAGE 2000-5", - "shortLabel": "M2k", - "type": "Mirage_2000_5", - "enabled": false, - "liveries": {} - }, - "F-15E": { - "name": "F-15E", - "coalition": "", - "era": "", - "label": "F-15E Strike Eagle", - "shortLabel": "15E", - "type": "F_15E", - "enabled": false, - "liveries": {} - }, - "MiG-29G": { - "name": "MiG-29G", - "coalition": "", - "era": "", - "label": "MiG-29G Fulcrum", - "shortLabel": "M29", - "type": "MiG_29G", - "enabled": false, - "liveries": {} - }, - "F-16C bl.50": { - "name": "F-16C bl.50", - "coalition": "", - "era": "", - "label": "F-16C Viper Block 50", - "shortLabel": "16C", - "type": "F_16C_bl_50", - "enabled": false, - "liveries": {} - }, - "F-16C bl.52d": { - "name": "F-16C bl.52d", - "coalition": "", - "era": "", - "label": "F-16C BL.52D", - "shortLabel": "16C", - "type": "F_16C_bl_52d", - "enabled": false, - "liveries": {} - }, - "F-16A": { - "name": "F-16A", - "coalition": "", - "era": "", - "label": "F-16A Viper", - "shortLabel": "16A", - "type": "F_16A", - "enabled": false, - "liveries": {} - }, - "F-16A MLU": { - "name": "F-16A MLU", - "coalition": "", - "era": "", - "label": "F-16A Viper MLU", - "shortLabel": "16A", - "type": "F_16A_MLU", - "enabled": false, - "liveries": {} - }, - "RQ-1A Predator": { - "name": "RQ-1A Predator", - "coalition": "", - "era": "", - "label": "RQ-1A PREDATOR", - "shortLabel": "RQ1", - "type": "RQ_1A_Predator", - "enabled": false, - "liveries": {} - }, - "Yak-40": { - "name": "Yak-40", - "coalition": "", - "era": "", - "label": "YAK-40", - "shortLabel": "40", - "type": "Yak_40", - "enabled": false, - "liveries": {} - }, - "SpitfireLFMkIX": { - "name": "SpitfireLFMkIX", - "coalition": "blue", - "era": "WW2", - "label": "Spitfire Mk 9", - "shortLabel": "Spit", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Torpedo Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank (Torpedo)", - "name": "Fuel Tank (Torpedo)", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "Slipper Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank (Slipper)", - "name": "Fuel Tank (Slipper)", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "GP 250", - "quantity": 2 - } - ], - "enabled": true, - "code": "GP 250", - "name": "GP 250", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GP 500", - "quantity": 1 - } - ], - "enabled": true, - "code": "GO 500", - "name": "GP 500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - } - ], - "type": "SpitfireLFMkIX", - "enabled": true, - "liveries": { - "441 9g-q": { - "name": "441 RCAF 9G-Q", - "countries": [ - "CAN", - "UK" - ] - }, - "ussr 26th gviap, pvo": { - "name": "USSR 26th GvIAP, PVO", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf standard": { - "name": "RAF standard", - "countries": [ - "UK" - ] - }, - "ussr_3rd_ae_57th_gviap": { - "name": "USSR 3rd AE, 57th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf 2 taf, sept 1944": { - "name": "RAF, 2nd Tactical Air Force, September 1944", - "countries": [ - "UK" - ] - }, - "ussr spitfire 57th gviap": { - "name": "USSR 57th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf 2 taf, july 1944": { - "name": "RAF, 2nd Tactical Air Force, July 1944", - "countries": [ - "UK" - ] - }, - "raf, no. 16 squadron": { - "name": "RAF, No.16 Squadron", - "countries": [ - "UK" - ] - }, - "ussr pilot lt. col. v. a. matsiyevitch, 26th gviap": { - "name": "USSR Lt.Col. V.A. Matsiyevitch, 26th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf, no. 126 squadron, harrowbeer": { - "name": "RAF, No.126 Squadron", - "countries": [ - "UK" - ] - }, - "raf 2 taf, june 1944": { - "name": "RAF, 2nd Tactical Air Force, June 1944", - "countries": [ - "UK" - ] - }, - "403 rcaf beurling": { - "name": "403 RCAF Beurling", - "countries": [ - "CAN", - "UK" - ] - }, - "raf, no. 145 squadron": { - "name": "RAF, No.145 Squadron", - "countries": [ - "UK" - ] - } - }, - "filename": "spitfire.png", - "description": "Single propellor, straight wing, 1 crew. Spitfire." - }, - "SpitfireLFMkIXCW": { - "name": "SpitfireLFMkIXCW", - "coalition": "blue", - "era": "WW2", - "label": "Spitfire Mk 9 CW", - "shortLabel": "Spit", - "loadouts": [ - { - "items": [], - "enabled": true, - "code": "", - "name": "Empty loadout", - "roles": [ - "No task", - "CAP" - ] - }, - { - "items": [ - { - "name": "Torpedo Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank (Torpedo)", - "name": "Fuel Tank (Torpedo)", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "Slipper Fuel Tank", - "quantity": 1 - } - ], - "enabled": true, - "code": "Fuel Tank (Slipper)", - "name": "Fuel Tank (Slipper)", - "roles": [ - "CAP", - "FAC-A", - "Escort" - ] - }, - { - "items": [ - { - "name": "GP 250", - "quantity": 2 - } - ], - "enabled": true, - "code": "GP 250", - "name": "GP 250", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - }, - { - "items": [ - { - "name": "GP 500", - "quantity": 1 - } - ], - "enabled": true, - "code": "GO 500", - "name": "GP 500", - "roles": [ - "Runway Attack", - "CAS", - "Antiship Strike", - "Strike" - ] - } - ], - "type": "SpitfireLFMkIXCW", - "enabled": true, - "liveries": { - "441 9g-q": { - "name": "441 RCAF 9G-Q", - "countries": [ - "CAN", - "UK" - ] - }, - "ussr 26th gviap, pvo": { - "name": "USSR 26th GvIAP, PVO", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf standard": { - "name": "RAF standard", - "countries": [ - "UK" - ] - }, - "ussr_3rd_ae_57th_gviap": { - "name": "USSR 3rd AE, 57th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf 2 taf, sept 1944": { - "name": "RAF, 2nd Tactical Air Force, September 1944", - "countries": [ - "UK" - ] - }, - "ussr spitfire 57th gviap": { - "name": "USSR 57th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf 2 taf, july 1944": { - "name": "RAF, 2nd Tactical Air Force, July 1944", - "countries": [ - "UK" - ] - }, - "raf, no. 16 squadron": { - "name": "RAF, No.16 Squadron", - "countries": [ - "UK" - ] - }, - "ussr pilot lt. col. v. a. matsiyevitch, 26th gviap": { - "name": "USSR Lt.Col. V.A. Matsiyevitch, 26th GvIAP", - "countries": [ - "RUS", - "SUN" - ] - }, - "raf, no. 126 squadron, harrowbeer": { - "name": "RAF, No.126 Squadron", - "countries": [ - "UK" - ] - }, - "raf 2 taf, june 1944": { - "name": "RAF, 2nd Tactical Air Force, June 1944", - "countries": [ - "UK" - ] - }, - "403 rcaf beurling": { - "name": "403 RCAF Beurling", - "countries": [ - "CAN", - "UK" - ] - }, - "raf, no. 145 squadron": { - "name": "RAF, No.145 Squadron", - "countries": [ - "UK" - ] - } - }, - "filename": "spitfire.png", - "description": "Single propellor, straight wing, 1 crew. Spitfire with clipped wingtips.." - }, - "P-51D": { - "name": "P-51D", - "coalition": "", - "era": "", - "label": "P-51D Mustang", - "shortLabel": "P51", - "type": "P_51D", - "enabled": false, - "liveries": {} - }, - "P-47D-30": { - "name": "P-47D-30", - "coalition": "", - "era": "", - "label": "P-47D-30", - "shortLabel": "P47", - "type": "P_47D_30", - "enabled": false, - "liveries": {} - }, - "P-47D-30bl1": { - "name": "P-47D-30bl1", - "coalition": "", - "era": "", - "label": "P-47D-30", - "shortLabel": "P47", - "type": "P_47D_30bl1", - "enabled": false, - "liveries": {} - }, - "A-10A": { - "name": "A-10A", - "coalition": "", - "era": "", - "label": "A-10A Warthog", - "shortLabel": "A10", - "type": "A_10A", - "enabled": false, - "liveries": {} - }, - "A-10C": { - "name": "A-10C", - "coalition": "", - "era": "", - "label": "A-10C Warthog", - "shortLabel": "A10", - "type": "A_10C", - "enabled": false, - "liveries": {} - }, - "KC130": { - "name": "KC130", - "coalition": "", - "era": "", - "label": "KC130", - "shortLabel": "130", - "type": "KC130", - "enabled": false, - "liveries": {} - }, - "C-101EB": { - "name": "C-101EB", - "coalition": "", - "era": "", - "label": "C-101EB", - "shortLabel": "C-101EB", - "type": "C_101EB", - "enabled": false, - "liveries": {} - }, - "KJ-2000": { - "name": "KJ-2000", - "coalition": "", - "era": "", - "label": "KJ-2000", - "shortLabel": "KJ-2000", - "type": "KJ_2000", - "enabled": false, - "liveries": {} - }, - "WingLoong-I": { - "name": "WingLoong-I", - "coalition": "", - "era": "", - "label": "MQ-9 Reaper", - "shortLabel": "MQ9", - "type": "WingLoong_I", - "enabled": false, - "liveries": {} - }, - "Christen Eagle II": { - "name": "Christen Eagle II", - "coalition": "", - "era": "", - "label": "CHRISTEN EAGLE II", - "shortLabel": "CE2", - "type": "Christen_Eagle_II", - "enabled": false, - "liveries": {} - }, - "F-5E": { - "name": "F-5E", - "coalition": "", - "era": "", - "label": "F-5E", - "shortLabel": "5E", - "type": "F_5E", - "enabled": false, - "liveries": {} - }, - "F/A-18A": { - "name": "F/A-18A", - "coalition": "", - "era": "", - "label": "F/A-18A", - "shortLabel": "18A", - "type": "F_A_18A", - "enabled": false, - "liveries": {} - }, - "F/A-18C": { - "name": "F/A-18C", - "coalition": "", - "era": "", - "label": "F/A-18C", - "shortLabel": "18C", - "type": "F_A_18C", - "enabled": false, - "liveries": {} - }, - "Hawk": { - "name": "Hawk", - "coalition": "", - "era": "", - "label": "Hawk", - "shortLabel": "Hk", - "type": "Hawk", - "enabled": false, - "liveries": {} - }, - "L-39C": { - "name": "L-39C", - "coalition": "", - "era": "", - "label": "L-39C", - "shortLabel": "L39C", - "type": "L_39C", - "enabled": false, - "liveries": {} - }, - "MB-339APAN": { - "name": "MB-339APAN", - "coalition": "", - "era": "", - "label": "MB-339APAN", - "shortLabel": "339", - "type": "MB_339APAN", - "enabled": false, - "liveries": {} - }, - "Mirage-F1C": { - "name": "Mirage-F1C", - "coalition": "", - "era": "", - "label": "MIRAGE-F1C", - "shortLabel": "MF1", - "type": "Mirage_F1C", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CE": { - "name": "Mirage-F1CE", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CE", - "shortLabel": "MF1", - "type": "Mirage_F1CE", - "enabled": false, - "liveries": {} - }, - "Mirage-F1M-EE": { - "name": "Mirage-F1M-EE", - "coalition": "", - "era": "", - "label": "MIRAGE-F1M-EE", - "shortLabel": "MF1", - "type": "Mirage_F1M_EE", - "enabled": false, - "liveries": {} - }, - "Mirage-F1M-CE": { - "name": "Mirage-F1M-CE", - "coalition": "", - "era": "", - "label": "MIRAGE-F1M-CE", - "shortLabel": "MF1", - "type": "Mirage_F1M_CE", - "enabled": false, - "liveries": {} - }, - "Mirage-F1C-200": { - "name": "Mirage-F1C-200", - "coalition": "", - "era": "", - "label": "MIRAGE-F1C-200", - "shortLabel": "MF1", - "type": "Mirage_F1C_200", - "enabled": false, - "liveries": {} - }, - "Mirage-F1EH": { - "name": "Mirage-F1EH", - "coalition": "", - "era": "", - "label": "MIRAGE-F1EH", - "shortLabel": "MF1", - "type": "Mirage_F1EH", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CH": { - "name": "Mirage-F1CH", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CH", - "shortLabel": "MF1", - "type": "Mirage_F1CH", - "enabled": false, - "liveries": {} - }, - "Mirage-F1JA": { - "name": "Mirage-F1JA", - "coalition": "", - "era": "", - "label": "MIRAGE-F1JA", - "shortLabel": "MF1", - "type": "Mirage_F1JA", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CG": { - "name": "Mirage-F1CG", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CG", - "shortLabel": "MF1", - "type": "Mirage_F1CG", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CZ": { - "name": "Mirage-F1CZ", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CZ", - "shortLabel": "MF1", - "type": "Mirage_F1CZ", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CJ": { - "name": "Mirage-F1CJ", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CJ", - "shortLabel": "MF1", - "type": "Mirage_F1CJ", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CK": { - "name": "Mirage-F1CK", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CK", - "shortLabel": "MF1", - "type": "Mirage_F1CK", - "enabled": false, - "liveries": {} - }, - "Mirage-F1EQ": { - "name": "Mirage-F1EQ", - "coalition": "", - "era": "", - "label": "MIRAGE-F1EQ", - "shortLabel": "MF1", - "type": "Mirage_F1EQ", - "enabled": false, - "liveries": {} - }, - "Mirage-F1ED": { - "name": "Mirage-F1ED", - "coalition": "", - "era": "", - "label": "MIRAGE-F1ED", - "shortLabel": "MF1", - "type": "Mirage_F1ED", - "enabled": false, - "liveries": {} - }, - "Mirage-F1EDA": { - "name": "Mirage-F1EDA", - "coalition": "", - "era": "", - "label": "MIRAGE-F1EDA", - "shortLabel": "MF1", - "type": "Mirage_F1EDA", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CR": { - "name": "Mirage-F1CR", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CR", - "shortLabel": "MF1", - "type": "Mirage_F1CR", - "enabled": false, - "liveries": {} - }, - "Mirage-F1CT": { - "name": "Mirage-F1CT", - "coalition": "", - "era": "", - "label": "MIRAGE-F1CT", - "shortLabel": "MF1", - "type": "Mirage_F1CT", - "enabled": false, - "liveries": {} - }, - "Mirage-F1B": { - "name": "Mirage-F1B", - "coalition": "", - "era": "", - "label": "MIRAGE-F1B", - "shortLabel": "MF1", - "type": "Mirage_F1B", - "enabled": false, - "liveries": {} - }, - "Mirage-F1BE": { - "name": "Mirage-F1BE", - "coalition": "", - "era": "", - "label": "MIRAGE-F1BE", - "shortLabel": "MF1", - "type": "Mirage_F1BE", - "enabled": false, - "liveries": {} - }, - "Mirage-F1BQ": { - "name": "Mirage-F1BQ", - "coalition": "", - "era": "", - "label": "MIRAGE-F1BQ", - "shortLabel": "MF1", - "type": "Mirage_F1BQ", - "enabled": false, - "liveries": {} - }, - "Mirage-F1BD": { - "name": "Mirage-F1BD", - "coalition": "", - "era": "", - "label": "MIRAGE-F1BD", - "shortLabel": "MF1", - "type": "Mirage_F1BD", - "enabled": false, - "liveries": {} - }, - "Mirage-F1DDA": { - "name": "Mirage-F1DDA", - "coalition": "", - "era": "", - "label": "MIRAGE-F1DDA", - "shortLabel": "MF1", - "type": "Mirage_F1DDA", - "enabled": false, - "liveries": {} - }, - "Yak-52": { - "name": "Yak-52", - "coalition": "", - "era": "", - "label": "YAK-52", - "shortLabel": "52", - "type": "Yak_52", - "enabled": false, - "liveries": {} - }, - "B-17G": { - "name": "B-17G", - "coalition": "", - "era": "", - "label": "B-17G Flying Fortress", - "shortLabel": "B17", - "type": "B_17G", - "enabled": false, - "liveries": {} - }, - "Ju-88A4": { - "name": "Ju-88A4", - "coalition": "", - "era": "", - "label": "JU-88 A4", - "shortLabel": "Ju88", - "type": "Ju_88A4", - "enabled": false, - "liveries": {} - }, - "C-47": { - "name": "C-47", - "coalition": "", - "era": "", - "label": "C-47 Dakota", - "shortLabel": "C47", - "type": "C_47", - "enabled": false, - "liveries": {} - }, - "TF-51D": { - "name": "TF-51D", - "coalition": "", - "era": "", - "label": "TF-51D", - "shortLabel": "T51", - "type": "TF_51D", - "enabled": false, - "liveries": {} - } +{ + "A-10C_2": { + "name": "A-10C_2", + "coalition": "blue", + "era": "Late Cold War", + "label": "A-10C Warthog 2", + "shortLabel": "A10", + "loadouts": [ + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*2, AGM-65H*2, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", + "name": "AGM-65D*2, AGM-65H*2, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 1 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*2,AGM-65H*2,GBU-12,GBU-38,MK82*3,MK82AIR*3,MK5*7,TGP,AM-9*2", + "name": "AGM-65D*2,AGM-65H*2,GBU-12,GBU-38,MK82*3,MK82AIR*3,MK5*7,TGP,AM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*2,AGM-65H*2,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK151*7", + "name": "AGM-65D*2,AGM-65H*2,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK151*7", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + }, + { + "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", + "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,TGP,ECM", + "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,TGP,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", + "quantity": 2 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*2,AGM-65H*2,Mk-82AIR*6,CBU-87*2,Mk151*7,AIM-9*2,TGP,ECM", + "name": "AGM-65D*2,AGM-65H*2,Mk-82AIR*6,CBU-87*2,Mk151*7,AIM-9*2,TGP,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*2,AGM-65H*2,TGP, ECM, AIM-9*2", + "name": "AGM-65D*2,AGM-65H*2,TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 6 + }, + { + "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*2,Mk-82*6,AIM-9*2,ECM", + "name": "AGM-65D*2,Mk-82*6,AIM-9*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 3 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*3, AGM-65H*3, CBU-97*4,TGP, ECM, AIM-9*2", + "name": "AGM-65D*3, AGM-65H*3, CBU-97*4,TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 2 + }, + { + "name": "CBU-105 - 10 x SFW, CBU with WCMD", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-65D*4, CBU-105*2,CBU-97*2, TGP, ECM, AIM-9*2", + "name": "AGM-65D*4, CBU-105*2,CBU-97*2, TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-105 - 10 x SFW, CBU with WCMD", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-65D*4, CBU-105*4,TGP, ECM, AIM-9*2", + "name": "AGM-65D*4, CBU-105*4,TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-65D*4, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", + "name": "AGM-65D*4, CBU-97*2, CBU-87*2, TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "AGM-65D*4, CBU-97*4,TGP, ECM, AIM-9*2", + "name": "AGM-65D*4, CBU-97*4,TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 1 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*4,GBU-12*2,GBU-38,Mk-82,AIM-9,TGP,ECM", + "name": "AGM-65D*4,GBU-12*2,GBU-38,Mk-82,AIM-9,TGP,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*4,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK5*7", + "name": "AGM-65D*4,GBU-12*2,GBU-38*2,AIM-9*2,TGP,ECM,MK5*7", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*4,Mk-82*6,CBU-87*2,TGP,AIM-9*2,Mk151*7", + "name": "AGM-65D*4,Mk-82*6,CBU-87*2,TGP,AIM-9*2,Mk151*7", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*4,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", + "name": "AGM-65D*4,Mk-82AIR*2,CBU-87*2,AIM-9M*2,ECM,TGP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*4,TGP, ECM, AIM-9*2", + "name": "AGM-65D*4,TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-65D*6, CBU-97*4,TGP, ECM, AIM-9*2", + "name": "AGM-65D*6, CBU-97*4,TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 3 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65D*6,GBU-12*4,AIM-9M*2,ECM,TGP", + "name": "AGM-65D*6,GBU-12*4,AIM-9M*2,ECM,TGP", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 7 + }, + { + "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65G,AGM-65D,Mk-82*7,AIM-9*2,ECM", + "name": "AGM-65G,AGM-65D,Mk-82*7,AIM-9*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "quantity": 1 + }, + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65G,AGM-65K,GBU-10*2,AIM-9*2,TGP,ECM", + "name": "AGM-65G,AGM-65K,GBU-10*2,AIM-9*2,TGP,ECM", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "quantity": 2 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65G*2,GBU-31*2,AIM-9*2,TGP,ECM", + "name": "AGM-65G*2,GBU-31*2,AIM-9*2,TGP,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-65H*4, CBU-97*4,TGP, ECM, AIM-9*2", + "name": "AGM-65H*4, CBU-97*4,TGP, ECM, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", + "quantity": 2 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65K*2,GBU-12*8,AIM-9M*2.ECM,TGP", + "name": "AGM-65K*2,GBU-12*8,AIM-9M*2.ECM,TGP", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65K*2,GBU-38*4,AIM-9*2,TGP,ECM", + "name": "AGM-65K*2,GBU-38*4,AIM-9*2,TGP,ECM", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-105 - 10 x SFW, CBU with WCMD", + "quantity": 4 + }, + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65L*2,CBU-105*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", + "name": "AGM-65L*2,CBU-105*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 4 + }, + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", + "name": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,M151 APKWS*7,TGP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 4 + }, + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,TGP", + "name": "AGM-65L*2,CBU-97*4,AIM-9M*2,ECM,TGP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 2 + }, + { + "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65L*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,ECM,TGP", + "name": "AGM-65L*2,Mk-82AIR*2,CBU-97*2,AIM-9M*2,ECM,TGP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "BDU-33*12, TGP, CAP-9*1", + "name": "BDU-33*12, TGP, CAP-9*1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", + "quantity": 2 + }, + { + "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", + "quantity": 2 + }, + { + "name": "LAU-117 with TGM-65D - Trg Round for Mav D (IIR)", + "quantity": 1 + }, + { + "name": "LAU-117 with TGM-65H - Trg Round for Mav H (CCD)", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + } + ], + "enabled": true, + "code": "BDU-33*6, TGM-65H, TGM-65D, TGP, BDU-50LGB*2, CAP-9*1", + "name": "BDU-33*6, TGM-65H, TGM-65D, TGP, BDU-50LGB*2, CAP-9*1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + } + ], + "enabled": true, + "code": "BDU-33*6, TGP, CAP-9*1", + "name": "BDU-33*6, TGP, CAP-9*1", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "BRU-42 with 3 x BDU-33 - 25lb Practice Bombs LD", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "BDU-50LD - 500lb Inert Practice Bomb LD", + "quantity": 2 + }, + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + } + ], + "enabled": true, + "code": "BDU-33*6, TGP, CAP-9*1, BDU-50LD*2", + "name": "BDU-33*6, TGP, CAP-9*1, BDU-50LD*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "BDU-50HD - 500lb Inert Practice Bomb HD", + "quantity": 2 + }, + { + "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk61, Practice", + "quantity": 1 + }, + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + } + ], + "enabled": true, + "code": "BDU-50HD*2,BDU-50LGB*2,TGP, CAP-9*1", + "name": "BDU-50HD*2,BDU-50LGB*2,TGP, CAP-9*1", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "BDU-50HD - 500lb Inert Practice Bomb HD", + "quantity": 6 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk1, Practice", + "quantity": 1 + } + ], + "enabled": true, + "code": "BDU-50HD*6,Mk1*7,TGP, CAP-9*1", + "name": "BDU-50HD*6,Mk1*7,TGP, CAP-9*1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "BDU-50HD - 500lb Inert Practice Bomb HD", + "quantity": 2 + }, + { + "name": "BDU-50LD - 500lb Inert Practice Bomb LD", + "quantity": 2 + }, + { + "name": "LAU-117 with CATM-65K - Captive Trg Round for Mav K (CCD)", + "quantity": 1 + }, + { + "name": "LAU-117 with TGM-65G - Trg Round for Mav G (IIR)", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts WTU-1/B, Practice", + "quantity": 1 + }, + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + } + ], + "enabled": true, + "code": "BDU-50LD*2, BDU-50HD*2,CATM-65K, TGM-65G, TGP, CAP-9*1", + "name": "BDU-50LD*2, BDU-50HD*2,CATM-65K, TGM-65G, TGP, CAP-9*1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "CBU-103 - 202 x CEM, CBU with WCMD", + "quantity": 4 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "CBU-103*4, M151*14, AIM-9*2, ECM", + "name": "CBU-103*4, M151*14, AIM-9*2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", + "quantity": 2 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "CBU-87*2, M151*14, MK-82AIR*6, AIM-9*2,ECM", + "name": "CBU-87*2, M151*14, MK-82AIR*6, AIM-9*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 4 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 4 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "CBU-87*4, M151*28, AIM-9*2,ECM", + "name": "CBU-87*4, M151*28, AIM-9*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 4 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "CBU-87*4, M151*42, AIM-9*2, ECM", + "name": "CBU-87*4, M151*42, AIM-9*2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-10*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "name": "GBU-10*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-12*14,TGP, AIM-9*2", + "name": "GBU-12*14,TGP, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-12*2,GBU-38*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "name": "GBU-12*2,GBU-38*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-12*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "name": "GBU-12*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BRU-42 with 3 x GBU-12 - 500lb Laser Guided Bombs", + "quantity": 2 + }, + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-12*6,GBU-10*2,TGP, AIM-9*2", + "name": "GBU-12*6,GBU-10*2,TGP, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-31*2,GBU-38*2, AGM-65H*2, AIM-9*2,TGP, ECM", + "name": "GBU-31*2,GBU-38*2, AGM-65H*2, AIM-9*2,TGP, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 4 + }, + { + "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-31*2,GBU-38*4,AIM-9*2,TGP,ECM, AIM-9*2", + "name": "GBU-31*2,GBU-38*4,AIM-9*2,TGP,ECM, AIM-9*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-31*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "name": "GBU-31*2,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 4 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-38*4,GBU-31*2,TGP, AIM-9*2", + "name": "GBU-38*4,GBU-31*2,TGP, AIM-9*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", + "quantity": 1 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 4 + }, + { + "name": "LAU-117 with AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-38*4,M151 APKWS*7,AGM-65D*1,AGM-65H*1,TGP,AIM-9*2,ECM", + "name": "GBU-38*4,M151 APKWS*7,AGM-65D*1,AGM-65H*1,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-38*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "name": "GBU-38*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "GBU-54(V)1/B - LJDAM, 500lb Laser & GPS Guided Bomb LD", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-54*4,M151 APKWS*7,AGM-65D*4,TGP,AIM-9*2,ECM", + "name": "GBU-54*4,M151 APKWS*7,AGM-65D*4,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "GBU-54(V)1/B - LJDAM, 500lb Laser & GPS Guided Bomb LD", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-54*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "name": "GBU-54*4,M151 APKWS*7,AGM-65L*2,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x LAU-131 pods - 21 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "LAU-131 98 rkt M156 WP, AIM-9*2,ECM", + "name": "LAU-131 98 rkt M156 WP, AIM-9*2,ECM", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", + "quantity": 6 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "LAU-68 42 rkt M156 WP, AIM-9*2, ECM", + "name": "LAU-68 42 rkt M156 WP, AIM-9*2, ECM", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 4 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "M151*98, Mk-82*2,AIM-9*2,ECM", + "name": "M151*98, Mk-82*2,AIM-9*2,ECM", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", + "quantity": 5 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82*20,AIM-9*2,ECM", + "name": "Mk-82*20,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 4 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82*4,Mk-8AIR*4,AIM-9*2,ECM", + "name": "Mk-82*4,Mk-8AIR*4,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 7 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82*6,AIM-9*2,TGP,ECM", + "name": "Mk-82*6,AIM-9*2,TGP,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 6 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82*6,Mk-84*2,AIM-9*2,ECM", + "name": "Mk-82*6,Mk-84*2,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 8 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82*8,AIM-9*2,ECM", + "name": "Mk-82*8,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 5 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82AIR*6,Mk-8AIR*4,M151*1,TGP,AIM-9*2,ECM", + "name": "Mk-82AIR*6,Mk-8AIR*4,M151*1,TGP,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 8 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82AIR*8,AIM-9*2,ECM", + "name": "Mk-82AIR*8,AIM-9*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M257, Para Illum", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "MK-84*2,LAU-68*2,AGM-65K*2", + "name": "MK-84*2,LAU-68*2,AGM-65K*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 4 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-84*4,AIM-9*2,ECM", + "name": "Mk-84*4,AIM-9*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 6 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-84*6,AIM-9*2,TGP,ECM", + "name": "Mk-84*6,AIM-9*2,TGP,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "PGM- GBU-10*2,GBU-12*4,AIM-9*2,TGP,ECM", + "name": "PGM- GBU-10*2,GBU-12*4,AIM-9*2,TGP,ECM", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "PGM- GBU-10*4, AGM-65K*2,AIM-9*2,TGP,ECM", + "name": "PGM- GBU-10*4, AGM-65K*2,AIM-9*2,TGP,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", + "quantity": 9 + } + ], + "enabled": true, + "code": "SUU-25*9,AIM-9*2,ECM", + "name": "SUU-25*9,AIM-9*2,ECM", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "TGP", + "name": "TGP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + }, + { + "name": "BDU-50LGB - 500lb Laser Guided Inert Practice Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "TGP, CAP-9*1, BDU-50LGB*4", + "name": "TGP, CAP-9*1, BDU-50LGB*4", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-117 with CATM-65K - Captive Trg Round for Mav K (CCD)", + "quantity": 1 + }, + { + "name": "LAU-117 with TGM-65G - Trg Round for Mav G (IIR)", + "quantity": 1 + }, + { + "name": "LAU-105 with 1 x Captive AIM-9M for ACM", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "TGP, CAP-9*1, CATM-65K*1, TGM-65G*1", + "name": "TGP, CAP-9*1, CATM-65K*1, TGM-65G*1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 3 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "TGP, CBU-87*3, M151*28, AIM-9*2, ECM", + "name": "TGP, CBU-87*3, M151*28, AIM-9*2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "TGP, M151*14, Mk-82*2, Mk-82AIR*2, AIM-9*2, ECM", + "name": "TGP, M151*14, Mk-82*2, Mk-82AIR*2, AIM-9*2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 AIR Ballute - 500lb GP Bombs HD", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "TGP, M151*42, Mk-82*6, Mk-82AIR*6, AIM-9*2, ECM", + "name": "TGP, M151*42, Mk-82*6, Mk-82AIR*6, AIM-9*2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "TGP, M151*49, Mk-82*2, CBU-87*2, AIM-9*2, ECM", + "name": "TGP, M151*49, Mk-82*2, CBU-87*2, AIM-9*2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "BRU-42 with 3 x LAU-68 pods - 21 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 4 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "LAU-105 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "TGP, M151*84, Mk-82*2,AIM-9*2, ECM", + "name": "TGP, M151*84, Mk-82*2,AIM-9*2, ECM", + "roles": [ + "CAS" + ] + } + ], + "filename": "a-10.png", + "enabled": true, + "liveries": { + "81st fs spangdahlem ab, germany (sp) 1": { + "name": "81st FS Spangdahlem AB, Germany (SP) 1", + "countries": [ + "USA" + ] + }, + "fictional spanish tritonal": { + "name": "Fictional Spanish Tritonal", + "countries": [ + "SPN" + ] + }, + "47th fs barksdale afb, louisiana (bd)": { + "name": "47th FS Barksdale AFB, Louisiana (BD)", + "countries": [ + "USA" + ] + }, + "fictional georgian olive": { + "name": "Fictional Georgian Olive", + "countries": [ + "GRG" + ] + }, + "algerian af fictional grey": { + "name": "Algerian AF Fictional Grey", + "countries": [ + "DZA" + ] + }, + "fictional russian air force 1": { + "name": "Fictional Russian Air Force 1", + "countries": [ + "RUS" + ] + }, + "fictional israel 115 sqn flying dragon": { + "name": "Fictional Israel 115 Sqn Flying Dragon", + "countries": [ + "ISR" + ] + }, + "172nd fs battle creek angb, michigan (bc)": { + "name": "172nd FS Battle Creek ANGB, Michigan (BC)", + "countries": [ + "USA" + ] + }, + "190th fs boise angb, idaho (id)": { + "name": "190th FS Boise ANGB, Idaho (ID)", + "countries": [ + "USA" + ] + }, + "81st fs spangdahlem ab, germany (sp) 2": { + "name": "81st FS Spangdahlem AB, Germany (SP) 2", + "countries": [ + "USA" + ] + }, + "fictional german 3322": { + "name": "Fictional German 3322", + "countries": [ + "GER" + ] + }, + "66th ws nellis afb, nevada (wa)": { + "name": "66th WS Nellis AFB, Nevada (WA)", + "countries": [ + "USA" + ] + }, + "algerian af fictional desert": { + "name": "Algerian AF Fictional Desert", + "countries": [ + "DZA" + ] + }, + "fictional italian am (23gruppo)": { + "name": "AM (23Gruppo)", + "countries": [ + "ITA" + ] + }, + "haf fictional": { + "name": "Hellenic Airforce (Fictional)", + "countries": [ + "GRC" + ] + }, + "184th fs arkansas ang, fort smith (fs)": { + "name": "184th FS Arkansas ANG, Fort Smith (FS)", + "countries": [ + "USA" + ] + }, + "354th fs davis monthan afb, arizona (dm)": { + "name": "354th FS Davis Monthan AFB, Arizona (DM)", + "countries": [ + "USA" + ] + }, + "fictional royal norwegian air force": { + "name": "Fictional Royal Norwegian Air Force", + "countries": [ + "NOR" + ] + }, + "422nd tes nellis afb, nevada (ot)": { + "name": "422nd TES Nellis AFB, Nevada (OT)", + "countries": [ + "USA" + ] + }, + "118th fs bradley angb, connecticut (ct)": { + "name": "118th FS Bradley ANGB, Connecticut (CT)", + "countries": [ + "USA" + ] + }, + "fictional spanish aga": { + "name": "Fictional Spanish AGA", + "countries": [ + "SPN" + ] + }, + "74th fs moody afb, georgia (ft)": { + "name": "74th FS Moody AFB, Georgia (FT)", + "countries": [ + "USA" + ] + }, + "fictional russian air force 2": { + "name": "Fictional Russian Air Force 2", + "countries": [ + "RUS" + ] + }, + "118th fs bradley angb, connecticut (ct) n621": { + "name": "118th FS Bradley ANGB, Connecticut (CT) N621", + "countries": [ + "USA" + ] + }, + "357th fs davis monthan afb, arizona (dm)": { + "name": "357th FS Davis Monthan AFB, Arizona (DM)", + "countries": [ + "USA" + ] + }, + "canada rcaf 409 squadron": { + "name": "Fictional RCAF 409 Squadron", + "countries": [ + "CAN" + ] + }, + "355th fs eielson afb, alaska (ak)": { + "name": "355th FS Eielson AFB, Alaska (AK)", + "countries": [ + "USA" + ] + }, + "25th fs osan ab, korea (os)": { + "name": "25th FS Osan AB, Korea (OS)", + "countries": [ + "USA" + ] + }, + "358th fs davis monthan afb, arizona (dm)": { + "name": "358th FS Davis Monthan AFB, Arizona (DM)", + "countries": [ + "USA" + ] + }, + "australia notional raaf": { + "name": "Australia Notional RAAF", + "countries": [ + "AUS" + ] + }, + "fictional canadian air force pixel camo": { + "name": "Fictional Canadian Air Force Pixel Camo", + "countries": [ + "CAN" + ] + }, + "fictional france escadron de chasse 03.003 ardennes": { + "name": "Fictional France Escadron de Chasse 03.003 ARDENNES", + "countries": [ + "FRA" + ] + }, + "canada rcaf 442 snow scheme": { + "name": "Fictional RCAF 442 Snow Scheme", + "countries": [ + "CAN" + ] + }, + "23rd tfw england afb (el)": { + "name": "23rd TFW England AFB (EL)", + "countries": [ + "USA" + ] + }, + "fictional georgian grey": { + "name": "Fictional Georgian Grey", + "countries": [ + "GRG" + ] + }, + "fictional ukraine air force 1": { + "name": "Fictional Ukraine Air Force 1", + "countries": [ + "UKR" + ] + }, + "104th fs maryland ang, baltimore (md)": { + "name": "104th FS Maryland ANG, Baltimore (MD)", + "countries": [ + "USA" + ] + }, + "fictional spanish 12nd wing": { + "name": "Fictional Spanish 12nd Wing", + "countries": [ + "SPN" + ] + }, + "a-10 grey": { + "name": "A-10 Grey", + "countries": [ + "DEN", + "TUR", + "NETH", + "BEL", + "UK" + ] + }, + "fictional german 3323": { + "name": "Fictional German 3323", + "countries": [ + "GER" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, straight wing, 1 crew, attack aircraft. Warthog", + "abilities": "Boom AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "A-20G": { + "name": "A-20G", + "coalition": "blue", + "label": "A-20G Havoc", + "era": "WW2", + "shortLabel": "A20", + "loadouts": [ + { + "items": [ + { + "name": "4 x AN-M64 - 500lb GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "500 lb GP bomb LD*4", + "name": "500 lb GP bomb LD*4", + "roles": [ + "CAS", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + } + ], + "filename": "a-20.png", + "enabled": true, + "liveries": { + "ussr 1st gmtap": { + "name": "1st GMTAP", + "countries": [ + "SUN", + "RUS" + ] + }, + "usaf 645th bs": { + "name": "645th BS, 410th BG, 9th AF", + "countries": [ + "USA" + ] + }, + "107 sqn": { + "name": "107 SQN", + "countries": [ + "UK" + ] + }, + "ussr 27 ape dd": { + "name": "27th API DD", + "countries": [ + "SUN", + "RUS" + ] + }, + "usaf 668th bs": { + "name": "668th BS, 416th BG", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "2 propeller, straight wing, 3 crew, medium attack bomber. Havoc", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "A-50": { + "name": "A-50", + "coalition": "red", + "label": "A-50 Mainstay", + "era": "Late Cold War", + "shortLabel": "A50", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "AWACS" + ] + } + ], + "filename": "a-50.png", + "enabled": true, + "liveries": { + "rf air force": { + "name": "RF Air Force", + "countries": [ + "RUS" + ] + }, + "rf air force new": { + "name": "RF Air Force new", + "countries": [ + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 15 crew. NATO reporting name: Mainstay", + "abilities": "AEW", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "KJ-2000": { + "name": "KJ-2000", + "coalition": "red", + "label": "KJ-2000", + "era": "Late Cold War", + "shortLabel": "KJ2k", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "AWACS" + ] + } + ], + "filename": "a-50.png", + "enabled": true, + "liveries": { + "china air force kj-2000 (parade 93)": { + "name": "china air force kj-2000 (parade 93)", + "countries": [ + "CHN" + ] + }, + "china air force kj-2000": { + "name": "china air force kj-2000", + "countries": [ + "CHN" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 15 crew. NATO reporting name: Mainring", + "abilities": "AEW", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "AJS37": { + "name": "AJS37", + "coalition": "blue", + "label": "AJS37 Viggen", + "era": "Mid Cold War", + "shortLabel": "AJS", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", + "quantity": 4 + }, + { + "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "Battlefield Air Interdiction: RB-75*4, RB-24J*2, XT", + "name": "Battlefield Air Interdiction: RB-75*4, RB-24J*2, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-04E Anti-ship Missile", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Anti-ship: RB-04E*2, RB-74*2, XT", + "name": "Anti-ship: RB-04E*2, RB-74*2, XT", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "Anti-ship (Heavy Mav): RB-75T*4, XT", + "name": "Anti-ship (Heavy Mav): RB-75T*4, XT", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Rb-05A MCLOS ASM/AShM/AAM", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "U/22 Jammer pod", + "quantity": 1 + }, + { + "name": "KB Flare/Chaff dispenser pod", + "quantity": 1 + }, + { + "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Hard Target (Countermeasures): RB-05, XT, KB, U22", + "name": "Hard Target (Countermeasures): RB-05, XT, KB, U22", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Hard Target (MAV): RB-75T*2, RB-74*2, XT", + "name": "Hard Target (MAV): RB-75T*2, RB-74*2, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "Ferry Flight: XT", + "name": "Ferry Flight: XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", + "quantity": 2 + }, + { + "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS (75 GUN): RB-75*2, AKAN", + "name": "CAS (75 GUN): RB-75*2, AKAN", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "CAP: RB-74*4, XT", + "name": "CAP: RB-74*4, XT", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "U22/A Jammer", + "quantity": 1 + }, + { + "name": "KB Flare/Chaff dispenser pod", + "quantity": 1 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Countermeasures Escort: U/22A, KB", + "name": "Countermeasures Escort: U/22A, KB", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BK-90 MJ1 (72 x MJ1 HE-FRAG Bomblets)", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Strike: BK90 (MJ1)*2, RB-74*2, XT", + "name": "Strike: BK90 (MJ1)*2, RB-74*2, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-05A MCLOS ASM/AShM/AAM", + "quantity": 2 + }, + { + "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS: AKAN, RB-05A", + "name": "CAS: AKAN, RB-05A", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAP (6 AAM): RB-74*4, RB-24J*2, XT", + "name": "CAP (6 AAM): RB-74*4, RB-24J*2, XT", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Rocket Half Load HE: ARAK HE*2, RB-74*2, XT", + "name": "Rocket Half Load HE: ARAK HE*2, RB-74*2, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-05A MCLOS ASM/AShM/AAM", + "quantity": 2 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "CAP / Intecept: RB-05A*2, RB-74*2, XT", + "name": "CAP / Intecept: RB-05A*2, RB-74*2, XT", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "4x SB M/71 120kg GP Bomb Low-drag", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Bombs Low-drag: SB71LD*16, RB-24J*2, XT", + "name": "Bombs Low-drag: SB71LD*16, RB-24J*2, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-75T (AGM-65A Maverick) (TV ASM Lg HE Whd)", + "quantity": 2 + }, + { + "name": "KB Flare/Chaff dispenser pod", + "quantity": 1 + }, + { + "name": "U/22 Jammer pod", + "quantity": 1 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD: RB-75T*2, U22/A, KB, XT", + "name": "SEAD: RB-75T*2, U22/A, KB, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-15F Programmable Anti-ship Missile", + "quantity": 2 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "Anti-Ship (Modern): RB-15F*2, RB-74*2, XT", + "name": "Anti-Ship (Modern): RB-15F*2, RB-74*2, XT", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "New Payload", + "name": "New Payload", + "roles": [] + }, + { + "items": [ + { + "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "CAP (AJ37): RB-24J*2", + "name": "CAP (AJ37): RB-24J*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "KB Flare/Chaff dispenser pod", + "quantity": 1 + }, + { + "name": "Rb-04E Anti-ship Missile", + "quantity": 1 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "ECM Escort Anti-ship: RB-04E, KB, RB-74*2, XT", + "name": "ECM Escort Anti-ship: RB-04E, KB, RB-74*2, XT", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "4x SB M/71 120kg GP Bomb High-drag", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Bombs High-drag: SB71HD*16, XT, RB-24J", + "name": "Bombs High-drag: SB71HD*16, XT, RB-24J", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Rb-75A (AGM-65A Maverick) (TV ASM)", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "Anti-ship (Light Mav): RB-75*4, XT", + "name": "Anti-ship (Light Mav): RB-75*4, XT", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Rocket Full Load HE: ARAK HE*4, RB-24J, XT", + "name": "Rocket Full Load HE: ARAK HE*4, RB-24J, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "2x 80kg LYSB-71 Illumination Bomb", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "Illumination: LYSB*8, XT", + "name": "Illumination: LYSB*8, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-05A MCLOS ASM/AShM/AAM", + "quantity": 2 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Anti-ship (RB05): RB-05A*2, RB-74*2, XT", + "name": "Anti-ship (RB05): RB-05A*2, RB-74*2, XT", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AKAN M/55 Gunpod, 150 rnds MINGR55-HE", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "CAP (Gun): AKAN*2, RB-74*2, XT", + "name": "CAP (Gun): AKAN*2, RB-74*2, XT", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Rb-05A MCLOS ASM/AShM/AAM", + "quantity": 2 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-74 (AIM-9L) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Hard Target: RB-05A*2, RB-74*2, XT", + "name": "Hard Target: RB-05A*2, RB-74*2, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "Rb-05A MCLOS ASM/AShM/AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "RB-05*2, XT", + "name": "RB-05*2, XT", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "ARAK M/70B HE 6x 135mm UnGd Rkts, Shu70 HE/FRAG", + "quantity": 4 + }, + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + } + ], + "enabled": true, + "code": "CAS: ARAK M70 HE*4, XT", + "name": "CAS: ARAK M70 HE*4, XT", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AJS External-tank 1013kg fuel", + "quantity": 1 + }, + { + "name": "4x SB M/71 120kg GP Bomb High-drag", + "quantity": 4 + }, + { + "name": "Rb-24J (AIM-9P) Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Runway Strike: SB71HD*16, RB-24J, XT", + "name": "Runway Strike: SB71HD*16, RB-24J, XT", + "roles": [ + "Runway Attack" + ] + } + ], + "filename": "viggen.png", + "enabled": true, + "liveries": { + "37": { + "name": "#1 Splinter F21 Norrbottens Flygflottilj", + "countries": "All" + }, + "37402": { + "name": "#3 JA-37 F21 Akktu Stakki", + "countries": "All" + }, + "se-dxnv4": { + "name": "SE-DXN by Mach3DS", + "countries": "All" + }, + "f7 skaraborg": { + "name": "#4 Splinter F7 Skaraborgs Flygflottilj 76", + "countries": "All" + }, + "sf-37 akktu stakki - f21": { + "name": "SF-37 Akktu Stakki - F21", + "countries": "All" + }, + "the show must go on": { + "name": "SHOW MUST GO ON! by Bender & Mach3DS", + "countries": "All" + }, + "baremetal": { + "name": "#2 Bare Metal F7 Skaraborgs Flygflottilj", + "countries": "All" + } + }, + "type": "Aircraft", + "description": "Single jet engine, delta wing, 1 crew, attack aircraft. Viggen", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "AV8BNA": { + "name": "AV8BNA", + "coalition": "blue", + "label": "AV8BNA Harrier", + "era": "Late Cold War", + "shortLabel": "AV8", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 6 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "H-L-H: Mk-82SEx6, GAU-12", + "name": "H-L-H: Mk-82SEx6, GAU-12", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", + "quantity": 2 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 (7 WP Tkts)x2, TPOD", + "name": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 (7 WP Tkts)x2, TPOD", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 1 + }, + { + "name": "GBU-16 - 1000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AS: AGM-122, AIM-9M, GBU-12, GBU-16x2, TPOD, Jammer Pod, GAU-12", + "name": "AS: AGM-122, AIM-9M, GBU-12, GBU-16x2, TPOD, Jammer Pod, GAU-12", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "2 GBU-38 */*", + "quantity": 1 + }, + { + "name": "AERO 1D 300 Gallons Fuel Tank ", + "quantity": 2 + }, + { + "name": "2 GBU-38 *\\*", + "quantity": 1 + }, + { + "name": "AGM-122 Sidearm", + "quantity": 1 + } + ], + "enabled": true, + "code": "H-M-H: AIM-9M, AGM-122, GBU-38x4, Fuel Tankx2", + "name": "H-M-H: AIM-9M, AGM-122, GBU-38x4, Fuel Tankx2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "2 Mk-83 *\\*", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "2 Mk-83 */*", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx6, Jammer Pod, GAU-12", + "name": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx6, Jammer Pod, GAU-12", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AERO 1D 300 Gallons Fuel Tank ", + "quantity": 2 + }, + { + "name": "2 Mk-83 *\\*", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "2 Mk-83 */*", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx4, Jammer Pod, GAU-12, Fuel Tankx2", + "name": "Interdiction (H-H-H-H): AIM-9Mx2, Mk-83LDx4, Jammer Pod, GAU-12, Fuel Tankx2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 1 + }, + { + "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", + "quantity": 2 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AFAC: AIM-9m, AGM-122, SUU-25x2, LAU-68 (7 WP Tkts)x2, Jammer Pod", + "name": "AFAC: AIM-9m, AGM-122, SUU-25x2, LAU-68 (7 WP Tkts)x2, Jammer Pod", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "2 Mk-82 Snakeye */*", + "quantity": 2 + }, + { + "name": "2 Mk-82 Snakeye *\\*", + "quantity": 2 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "Interdiction (H-L-L-H): AIM-9Mx2, Mk-82SEx8, Jammer Pod, GAU-12", + "name": "Interdiction (H-L-L-H): AIM-9Mx2, Mk-82SEx8, Jammer Pod, GAU-12", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 6 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "H-M-H: Mk-82LDx6, GAU-12", + "name": "H-M-H: Mk-82LDx6, GAU-12", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "2 GBU-12 *-*", + "quantity": 2 + }, + { + "name": "AERO 1D 300 Gallons Fuel Tank ", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "PGM (H-H-H-H): GBU-12x4, TPOD, Fuel Tankx2", + "name": "PGM (H-H-H-H): GBU-12x4, TPOD, Fuel Tankx2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "2 Mk-82 Snakeye *\\*", + "quantity": 2 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "2 Mk-82 Snakeye */*", + "quantity": 2 + } + ], + "enabled": true, + "code": "L-L-L: Mk-82SEx10, Jammer Pod, GAU-12", + "name": "L-L-L: Mk-82SEx10, Jammer Pod, GAU-12", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "SUU-25 x 8 LUU-2 - Target Marker Flares", + "quantity": 2 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 LAU-68 (7 WP Tkts)x2, GAU-12", + "name": "AFAC: AIM-9Mx2, SUU-25x2, LAU-68 LAU-68 (7 WP Tkts)x2, GAU-12", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "3 Mk-82", + "quantity": 2 + }, + { + "name": "2 Mk-82 *\\*", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "2 Mk-82 */*", + "quantity": 1 + } + ], + "enabled": true, + "code": "H-M-H: Mk-82LDx10, GAU-12", + "name": "H-M-H: Mk-82LDx10, GAU-12", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets", + "quantity": 2 + }, + { + "name": "2 Mk-20 Rockeye *\\*", + "quantity": 2 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "2 Mk-20 Rockeye */*", + "quantity": 2 + } + ], + "enabled": true, + "code": "Area Suppression: Mk-20x10, GAU-12", + "name": "Area Suppression: Mk-20x10, GAU-12", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", + "quantity": 2 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 2 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "Rockets: LAU-10 (4 HE Rkts)x2, LAU-68 (7 HE Rkts)x2", + "name": "Rockets: LAU-10 (4 HE Rkts)x2, LAU-68 (7 HE Rkts)x2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AS: AIM-9M, AGM-122, AGM-65Fx2, GBU-12, TPOD, Jammer Pod, GAU-12", + "name": "AS: AIM-9M, AGM-122, AGM-65Fx2, GBU-12, TPOD, Jammer Pod, GAU-12", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-7 with AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12", + "name": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "2 GBU-12 *-*", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 1 + } + ], + "enabled": true, + "code": "PGM (H-H-H-H): GBU-12x5, TPOD, Jammer POd, GAU-12", + "name": "PGM (H-H-H-H): GBU-12x5, TPOD, Jammer POd, GAU-12", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-7 with AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AERO 1D 300 Gallons Fuel Tank ", + "quantity": 2 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12, Fuel Tankx2", + "name": "Helo Escort: AIM-9Mx4, Jammer Pod, GAU-12, Fuel Tankx2", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-16 - 1000lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "PGM (H-H-H-H): AIM-9Mx2, GBU-16x4, TPOD, GAU-12", + "name": "PGM (H-H-H-H): AIM-9Mx2, GBU-16x4, TPOD, GAU-12", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", + "quantity": 4 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "Anti Armor: AIM-9Mx2, AGM-65Fx4, GAU-12", + "name": "Anti Armor: AIM-9Mx2, AGM-65Fx4, GAU-12", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 1 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "2 Mk-83 *\\*", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "2 Mk-83 */*", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "RA (H-M-M-H): AIM-9M, AGM-122, Mk-83LDx6, Jammer Pod, GAU-12", + "name": "RA (H-M-M-H): AIM-9M, AGM-122, Mk-83LDx6, Jammer Pod, GAU-12", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", + "quantity": 4 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "Stand Off: AIM-9M, AGM-122, AGM-65Fx4, Jammer Pod, GAU-12", + "name": "Stand Off: AIM-9M, AGM-122, AGM-65Fx4, Jammer Pod, GAU-12", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 3 + }, + { + "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", + "quantity": 2 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "Stand Off: AIM-9M, AGM-122x3, AGM-65Fx2, Jammer Pod, GAU-12", + "name": "Stand Off: AIM-9M, AGM-122x3, AGM-65Fx2, Jammer Pod, GAU-12", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-122 Sidearm", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", + "quantity": 2 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + } + ], + "enabled": true, + "code": "Stand Off: AIM-9Mx2, AGM-122x2, AGM-65Fx2, Jammer Pod, GAU-12", + "name": "Stand Off: AIM-9Mx2, AGM-122x2, AGM-65Fx2, Jammer Pod, GAU-12", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 3 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "Iron Hand: AIM-9Mx1, AGM-122x3, LAU-68 (7 HE Rkts)x2, Jammer Pod, GAU-12", + "name": "Iron Hand: AIM-9Mx1, AGM-122x3, LAU-68 (7 HE Rkts)x2, Jammer Pod, GAU-12", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 3 + }, + { + "name": "2 Mk-20 Rockeye *\\*", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "2 Mk-20 Rockeye */*", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "Iron Hand: AIM-9M, AGM-122x3, Mk-20x4, Jammer Pod, GAU-12", + "name": "Iron Hand: AIM-9M, AGM-122x3, Mk-20x4, Jammer Pod, GAU-12", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AGM-122 Sidearm", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 2 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + }, + { + "name": "AN/ALQ-164 DECM Pod", + "quantity": 1 + }, + { + "name": "GAU 12 Gunpod w/SAPHEI-T", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 1 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AS: AIM-9M, AGM-122, AGM-65E2x2, GBU-12, TPOD, Jammer Pod, GAU-12", + "name": "AS: AIM-9M, AGM-122, AGM-65E2x2, GBU-12, TPOD, Jammer Pod, GAU-12", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "AGM-122 Sidearm", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65L - Maverick E2/L (CCD Laser ASM)", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "PGM: AIM-9M, AGM-122, AGM-65E2x4, TPOD", + "name": "PGM: AIM-9M, AGM-122, AGM-65E2x4, TPOD", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "AGM-122 Sidearm", + "quantity": 1 + }, + { + "name": "LAU-131 pod - 7 x 2.75\" Hydra, Laser Guided Rkts M151, HE APKWS", + "quantity": 4 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "PGM: AIM-9M, AGM-122, APKWSIIx4, TPOD", + "name": "PGM: AIM-9M, AGM-122, APKWSIIx4, TPOD", + "roles": [ + "Strike" + ] + } + ], + "filename": "av8bna.png", + "enabled": true, + "liveries": { + "vmat-203": { + "name": "VMAT-203", + "countries": "All" + }, + "vma-542": { + "name": "VMA-542", + "countries": "All" + }, + "vma-311d": { + "name": "VMA-311D", + "countries": "All" + }, + "vma-223d": { + "name": "VMA-223D", + "countries": "All" + }, + "vma-513": { + "name": "VMA-513", + "countries": "All" + }, + "vma-214d": { + "name": "VMA-214D", + "countries": "All" + }, + "vma-211": { + "name": "VMA-211", + "countries": "All" + }, + "vma-231-2": { + "name": "VMA-231-2", + "countries": "All" + }, + "vmat-203s": { + "name": "VMAT-203 Special", + "countries": "All" + }, + "vma-214": { + "name": "VMA-214", + "countries": "All" + }, + "vma-513d": { + "name": "VMA-513D", + "countries": "All" + }, + "vma-231d": { + "name": "VMA-231D", + "countries": "All" + }, + "vma-311": { + "name": "VMA-311", + "countries": "All" + }, + "default": { + "name": "default", + "countries": "All" + }, + "vma-231-1": { + "name": "VMA-231-1", + "countries": "All" + }, + "vma-211d": { + "name": "VMA-211D", + "countries": "All" + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 1 crew, all weather, VTOL attack aircraft. Harrier", + "abilities": "Drogue AAR, Carrier", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "An-26B": { + "name": "An-26B", + "coalition": "red", + "label": "An-26B Curl", + "era": "Mid Cold War", + "shortLabel": "A26", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Transport" + ] + } + ], + "filename": "an-26.png", + "enabled": true, + "liveries": { + "china plaaf": { + "name": "China PLAAF", + "countries": [ + "CHN" + ] + }, + "rf navy": { + "name": "RF Navy", + "countries": [ + "RUS" + ] + }, + "abkhazian af": { + "name": "Abkhazian AF", + "countries": [ + "ABH" + ] + }, + "aeroflot": { + "name": "Aeroflot", + "countries": [ + "SUN", + "RUS" + ] + }, + "georgian af": { + "name": "Georgian AF", + "countries": [ + "GRG" + ] + }, + "rf air force": { + "name": "RF Air Force", + "countries": [ + "RUS" + ] + }, + "ukraine af": { + "name": "Ukraine AF", + "countries": [ + "UKR" + ] + } + }, + "type": "Aircraft", + "description": "2 turboprop, straight wing, 5 crew, cargo and passenger aircraft. NATO reporting name: Curl", + "abilities": "Transport", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "An-30M": { + "name": "An-30M", + "coalition": "red", + "label": "An-30M Clank", + "era": "Mid Cold War", + "shortLabel": "A30", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Transport" + ] + } + ], + "filename": "a-50.png", + "enabled": true, + "liveries": { + "15th transport ab": { + "name": "15th Transport AB", + "countries": [ + "UKR" + ] + }, + "china caac": { + "name": "China CAAC", + "countries": [ + "CHN" + ] + }, + "rf air force": { + "name": "RF Air Force", + "countries": [ + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 turboprop, straight wing, 7 crew, weather reseach aircraft. NATO reporting name: Clank", + "abilities": "Transport", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "B-1B": { + "name": "B-1B", + "coalition": "blue", + "label": "B-1B Lancer", + "era": "Late Cold War", + "shortLabel": "B1", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "28 x Mk-82 - 500lb GP Bombs LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "Mk-82*84", + "name": "Mk-82*84", + "roles": [ + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "4 x AGM-154C - JSOW Unitary BROACH", + "quantity": 3 + } + ], + "enabled": true, + "code": "AGM-154*12", + "name": "AGM-154*12", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", + "quantity": 3 + } + ], + "enabled": true, + "code": "GBU-38*48", + "name": "GBU-38*48", + "roles": [ + "CAS", + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "10 x CBU-87 - 202 x CEM Cluster Bombs", + "quantity": 3 + } + ], + "enabled": true, + "code": "CBU-87*30", + "name": "CBU-87*30", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "10 x CBU-97 - 10 x SFW Cluster Bombs", + "quantity": 3 + } + ], + "enabled": true, + "code": "CBU-97*30", + "name": "CBU-97*30", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "10 x CBU-97 - 10 x SFW Cluster Bombs", + "quantity": 2 + }, + { + "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-38*16, CBU-97*20", + "name": "GBU-38*16, CBU-97*20", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "8 x Mk-84 - 2000lb GP Bombs LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "Mk-84*24", + "name": "Mk-84*24", + "roles": [ + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "8 x GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bombs", + "quantity": 3 + } + ], + "enabled": true, + "code": "GBU-31*24", + "name": "GBU-31*24", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "8 x GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bombs", + "quantity": 3 + } + ], + "enabled": true, + "code": "GBU-31(V)3/B*24", + "name": "GBU-31(V)3/B*24", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "16 x GBU-38 - JDAM, 500lb GPS Guided Bombs", + "quantity": 2 + }, + { + "name": "8 x GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bombs", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-31*8, GBU-38*32", + "name": "GBU-31*8, GBU-38*32", + "roles": [ + "Strike", + "Strike" + ] + } + ], + "filename": "b-1.png", + "enabled": true, + "liveries": { + "usaf standard": { + "name": "usaf standard", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swing wing, 2 crew bomber. Lancer", + "abilities": "Boom AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "B-52H": { + "name": "B-52H", + "coalition": "blue", + "label": "B-52H Stratofortress", + "era": "Early Cold War", + "shortLabel": "B52", + "loadouts": [ + { + "items": [ + { + "name": "8 x AGM-84A Harpoon ASM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-84A*8", + "name": "AGM-84A*8", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6 x AGM-86D on MER", + "quantity": 2 + }, + { + "name": "8 x AGM-86D", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-86C*20", + "name": "AGM-86C*20", + "roles": [ + "Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "MER12 with 12 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "27 x Mk-82 - 500lb GP Bombs LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk 82*51", + "name": "Mk 82*51", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "18 x Mk-84 2000lb GP Bombs", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-84*18", + "name": "Mk-84*18", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "HSAB with 9 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk20*18", + "name": "Mk20*18", + "roles": [ + "Strike", + "Runway Attack" + ] + } + ], + "filename": "b-52.png", + "enabled": true, + "liveries": { + "usaf standard": { + "name": "usaf standard", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "8 jet engine, swept wing, 6 crew bomber. Stratofortress", + "abilities": "Boom AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Bf-109K-4": { + "name": "Bf-109K-4", + "coalition": "red", + "label": "Bf-109K-4", + "era": "WW2", + "shortLabel": "109", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "300 liter Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel Tank", + "name": "Fuel Tank", + "roles": [ + "CAP", + "FAC-A", + "Escort" + ] + }, + { + "items": [ + { + "name": "SC 250 Type 3 J - 250kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC250", + "name": "SC250", + "roles": [ + "Runway Attack", + "CAS", + "Antiship Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "SC 500 J - 500kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC500", + "name": "SC500", + "roles": [ + "Runway Attack", + "CAS", + "Antiship Strike", + "Strike" + ] + } + ], + "filename": "bf109.png", + "enabled": true, + "liveries": { + "germany_standard": { + "name": "Jagdgeschwader 27", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 white 6, jg 4": { + "name": "White 6, JG 4", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 red7 eads": { + "name": "BF109G4 -red7- EADS -fondation messerschmitt V2", + "countries": [ + "GER" + ] + }, + "bf-109 k4 iijg52": { + "name": "II./JG52", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 us captured": { + "name": "US Captured", + "countries": [ + "USA" + ] + }, + "bf-109 k4 stab jg52": { + "name": "Stab JG52", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 334xxx batch": { + "name": "334xxx batch", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 ussr green": { + "name": "Green-trophy RKKA", + "countries": [ + "SUN", + "RUS" + ] + }, + "bf-109 k4 330xxx batch": { + "name": "330xxx batch", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 irmgard": { + "name": "Bf-109K-4 Irmgard Captured", + "countries": [ + "USA" + ] + }, + "bf-109 k4 swiss e-3a j-374 1940": { + "name": "Swiss E-3a J-374 1940 l'Seducteur", + "countries": [ + "SUI" + ] + }, + "green": { + "name": "Green", + "countries": "All" + }, + "bf-109 k4 9.jg77": { + "name": "9./JG77", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 croatia": { + "name": "Croatia Air Force - 'Black 4'", + "countries": [ + "HRV", + "NZG", + "GER" + ] + }, + "bf-109 k4 9.jg27 (w10+i)": { + "name": "9./JG27 (W10+I)", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 legion condor spain 1939": { + "name": "6-123 ESPAÑA", + "countries": [ + "SPN" + ] + }, + "bf-109 k4 jagdgeschwader 53": { + "name": " Jagdgeschwader 53", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 1.njg 11": { + "name": "NJG 11", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 g10 of tibor tobak rhaf": { + "name": "BF109G10 RHAF Tibor Tobak by Reflected", + "countries": [ + "GER", + "HUN", + "NZG" + ] + }, + "bf-109 k4 jagdgeschwader 77": { + "name": "Jagdgeschwader 77", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 iaf s-199": { + "name": "S-199 IDF by Ovenmit", + "countries": [ + "ISR" + ] + }, + "bf-109 k4 iiijg27": { + "name": "III/JG27", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 1.njg 11 (white 5)": { + "name": "1./NJG 11 (W5)", + "countries": [ + "GER", + "NZG" + ] + }, + "bf-109 k4 raf vd 358 e-2": { + "name": "RAF VD 358 E-2 - UK Captured", + "countries": [ + "UK" + ] + }, + "bf-109 k4 335xxx batch": { + "name": "335xxx batch", + "countries": [ + "GER", + "NZG" + ] + } + }, + "type": "Aircraft", + "description": "Single propeller, straight wing, 1 crew. 109", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "C-101CC": { + "name": "C-101CC", + "coalition": "blue", + "label": "C-101CC", + "era": "Late Cold War", + "shortLabel": "101", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, DEFA 553 CANNON (I)", + "name": "2*AIM-9P, DEFA 553 CANNON (I)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9M, DEFA 553 CANNON (I)", + "name": "2*AIM-9M, DEFA 553 CANNON (I)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, DEFA 533 CANNON (II)", + "name": "2*AIM-9P, DEFA 533 CANNON (II)", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, AN-M3 CANNON (IV)", + "name": "2*AIM-9P, AN-M3 CANNON (IV)", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R.550 MAGIC, DEFA 553 CANNON", + "name": "2*R.550 MAGIC, DEFA 553 CANNON", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9M, AN-M3 CANNON (III)", + "name": "2*AIM-9M, AN-M3 CANNON (III)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, DEFA 553 CANNON", + "name": "2*AIM-9P, DEFA 553 CANNON", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R.550 MAGIC, DEFA 553 CANNON (III)", + "name": "2*R.550 MAGIC, DEFA 553 CANNON (III)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "Belouga", + "quantity": 2 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", + "name": "2*AIM-9P, 2*BELOUGA, DEFA 553 CANNON", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "Sea Eagle - ASM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", + "name": "2*AIM9-P, 2*SEA EAGLE, DEFA-553 CANNON", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Sea Eagle - ASM", + "quantity": 2 + }, + { + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9M 2*SEA EAGLE, AN-M3 CANNON", + "name": "2*AIM-9M 2*SEA EAGLE, AN-M3 CANNON", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9M, AN-M3 CANNON", + "name": "2*AIM-9M, AN-M3 CANNON", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Belouga", + "quantity": 2 + }, + { + "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", + "name": "2*BELOUGA,2*BDU-33, DEFA-553 CANNON", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Sea Eagle - ASM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2* SEA EAGLE, DEFA-553 CANNON", + "name": "2* SEA EAGLE, DEFA-553 CANNON", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "BR-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*AIM-9P, 2*BR-250,2*MK-82, DEFA 553 CANNON", + "name": "2*AIM-9P, 2*BR-250,2*MK-82, DEFA 553 CANNON", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + }, + { + "name": "Sea Eagle - ASM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", + "name": "2*R.550 MAGIC, 2*SEA EAGLE , DEFA-553 CANNON", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", + "name": "2*R.550 MAGIC, DEFA 553 CANNON (IV)", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Belouga", + "quantity": 2 + }, + { + "name": "BR-500 - 500kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*BELOUGA, 2*BR-500, DEFA 553 CANNON", + "name": "2*BELOUGA, 2*BR-500, DEFA 553 CANNON", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9M, DEFA 553 CANNON (IV)", + "name": "2*AIM-9M, DEFA 553 CANNON (IV)", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + }, + { + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R.550 MAGIC, AN-M3 CANNON (II)", + "name": "2*R.550 MAGIC, AN-M3 CANNON (II)", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic, DEFA 553 CANNON (I)", + "name": "2*R550 Magic, DEFA 553 CANNON (I)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", + "quantity": 1 + }, + { + "name": "BIN-200 - 200kg Napalm Incendiary Bomb", + "quantity": 2 + }, + { + "name": "Belouga", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", + "name": "2*AIM-9M ,2*BELOUGA,2*BIN-200, AN-M3 CANNON", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", + "name": "2*AIM-9M, 2*LAU 68, 2*MK-82, DEFA 553 CANNON", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AN-M3 - 2*Browning Machine Guns 12.7mm", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9P, AN-M3 CANNON (III)", + "name": "2*AIM-9P, AN-M3 CANNON (III)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9M, DEFA 533 CANNON (II)", + "name": "2*AIM-9M, DEFA 533 CANNON (II)", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "DEFA-553 - 30mm Revolver Cannon", + "quantity": 1 + }, + { + "name": "4*BDU-33 - AF/B37K Rack with 4*25lb Practice Bomb LD", + "quantity": 2 + }, + { + "name": "BR-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "R550 Magic 2 IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", + "name": "2*R.550 MAGIC, 2*BR-250, 2*BDU-33, DEFA 553 CANNON", + "roles": [ + "CAS" + ] + } + ], + "filename": "c-101.png", + "enabled": true, + "liveries": { + "i brigada aerea - chile early green n.1 a-36 halcon": { + "name": "I Brigada Aerea - Chile Early Green", + "countries": [ + "CHL" + ] + }, + "aviodev skin": { + "name": "Aviodev Skin", + "countries": [ + "CUB", + "AUS", + "PRT", + "SUN", + "USA", + "BLR", + "HRV", + "LBN", + "SVK", + "TUR", + "ARG", + "BEL", + "FIN", + "SAU", + "UN", + "RSI", + "CHL", + "AUT", + "EGY", + "CAN", + "QAT", + "YUG", + "ISR", + "PER", + "BHR", + "NGA", + "IDN", + "KAZ", + "INS", + "AUSAF", + "PAK", + "SVN", + "RED", + "ROU", + "DEN", + "TUN", + "IND", + "CZE", + "MYS", + "GHA", + "OMN", + "CYP", + "RSO", + "IRN", + "UKR", + "JPN", + "THA", + "JOR", + "RSA", + "MEX", + "NOR", + "ITA", + "NETH", + "SUI", + "VNM", + "KOR", + "GRG", + "SDN", + "UK", + "BRA", + "ARE", + "ABH", + "BOL", + "RUS", + "PHL", + "SPN", + "MAR", + "DZA", + "GDR", + "HND", + "PRK", + "SRB", + "BGR", + "LBY", + "VEN", + "IRQ", + "SYR", + "NZG", + "GRC", + "POL", + "SWE", + "GER", + "CHN", + "YEM", + "FRA", + "HUN", + "ETH", + "BLUE", + "KWT" + ] + }, + "georgia combat fictional green": { + "name": "Georgia Combat Fictional Green", + "countries": [ + "GRG" + ] + }, + "i brigada aerea - chile early grey n.1 a-36 halcon": { + "name": "I Brigada Aerea - Chile Early Grey", + "countries": [ + "CHL" + ] + }, + "royal jordanian air force": { + "name": "Royal jordanian Air Force ", + "countries": [ + "JOR" + ] + }, + "georgia combat fictional spots": { + "name": "Georgia Combat Fictional Spots", + "countries": [ + "GRG" + ] + }, + "i brigada aerea - grupo de aviacion n.1 a-36 halcon desert skin": { + "name": "I Brigada Aerea - Grupo de Aviacion N.1 A-36 HALCON Desert Skin", + "countries": [ + "CHL" + ] + }, + "i brigada aerea - chile early agressor nº410 n.1 a-36 halcon": { + "name": "I Brigada Aerea - Chile Early Agressor Nº410 ", + "countries": [ + "CHL" + ] + }, + "usaf agressor fictional": { + "name": "USAF Agressor Fictional", + "countries": [ + "USA", + "AUSAF", + "BLUE" + ] + }, + "i brigada aerea - grupo de aviacion n.1 a-36 halcon": { + "name": "I Brigada Aerea - Grupo de Aviacion N.1 A-36 HALCON", + "countries": [ + "CHL" + ] + }, + "i brigada aerea - chile early agressor nº411 n.1 a-36 halcon": { + "name": "I Brigada Aerea - Chile Early Agressor Nº411", + "countries": [ + "CHL" + ] + }, + "claex green camu skin - centro logistico de armamento y experimentacion": { + "name": "CLAEX Green Camu Skin - Centro Logistico de Armamento y Experimentacion", + "countries": [ + "RED", + "SPN", + "BLUE" + ] + }, + "russia combat fictional": { + "name": "Russia Combat Fictional", + "countries": [ + "RED", + "RUS" + ] + }, + "georgia combat fictional wolf": { + "name": "Georgia Combat Fictional Wolf", + "countries": [ + "GRG" + ] + }, + "honduras - air force comayagua coronel jose enrique soto cano air base skin 1": { + "name": "Honduras - Air Force Comayagua Coronel Jose Enrique Soto Cano Air Base Skin 1", + "countries": [ + "HND" + ] + }, + "i brigada aerea - grupo de aviacion n.3 a-36 halcon": { + "name": "I Brigada Aerea - Grupo de Aviacion N.3 A-36 HALCON", + "countries": [ + "CHL" + ] + }, + "honduras - air force comayagua coronel jose enrique soto cano air base skin 2": { + "name": "Honduras - Air Force Comayagua Coronel Jose Enrique Soto Cano Air Base Skin 2", + "countries": [ + "HND" + ] + }, + "claex desert camu skin - centro logistico de armamento y experimentacion": { + "name": "CLAEX Desert Camu Skin - Centro Logistico de Armamento y Experimentacion", + "countries": [ + "RED", + "SPN", + "BLUE" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "C-130": { + "name": "C-130", + "coalition": "blue", + "label": "C-130 Hercules", + "era": "Early Cold War", + "shortLabel": "130", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Transport" + ] + } + ], + "filename": "c-130.png", + "enabled": true, + "liveries": { + "belgian air force": { + "name": "Belgian Air Force", + "countries": [ + "BEL" + ] + }, + "iriaf 5-8518": { + "name": "IRIAF 5-8518", + "countries": [ + "IRN" + ] + }, + "israel defence force": { + "name": "Israel Defence Force", + "countries": [ + "ISR" + ] + }, + "haf gray": { + "name": "Hellenic Airforce - Gray", + "countries": [ + "GRC" + ] + }, + "turkish air force": { + "name": "Turkish Air Force", + "countries": [ + "TUR" + ] + }, + "royal danish air force": { + "name": "Royal Danish Air Force", + "countries": [ + "DEN" + ] + }, + "algerian af green": { + "name": "Algerian AF Green", + "countries": [ + "DZA" + ] + }, + "royal netherlands air force": { + "name": "Royal Netherlands Air Force", + "countries": [ + "NETH" + ] + }, + "canada's air force": { + "name": "Canada's Air Force", + "countries": [ + "CAN" + ] + }, + "royal norwegian air force": { + "name": "Royal Norwegian Air Force", + "countries": [ + "NOR" + ] + }, + "iriaf 5-8503": { + "name": "IRIAF 5-8503", + "countries": [ + "IRN" + ] + }, + "us air force": { + "name": "US Air Force", + "countries": [ + "USA" + ] + }, + "royal air force": { + "name": "Royal Air Force", + "countries": [ + "UK" + ] + }, + "air algerie l-382 white": { + "name": "Air Algerie L-382 White", + "countries": [ + "DZA" + ] + }, + "french air force": { + "name": "French Air Force", + "countries": [ + "FRA" + ] + }, + "spanish air force": { + "name": "Spanish Air Force", + "countries": [ + "SPN" + ] + }, + "algerian af h30 white": { + "name": "Algerian AF H30 White", + "countries": [ + "DZA" + ] + } + }, + "type": "Aircraft", + "description": "4 turboprop, stright wing, 3 crew. Hercules", + "abilities": "Transport", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "C-17A": { + "name": "C-17A", + "coalition": "blue", + "label": "C-17A Globemaster", + "era": "Modern", + "shortLabel": "C17", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Transport" + ] + } + ], + "filename": "c-17.png", + "enabled": true, + "liveries": { + "usaf standard": { + "name": "usaf standard", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 3 crew. Globemaster", + "abilities": "Transport", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "E-2C": { + "name": "E-2C", + "coalition": "blue", + "label": "E-2D Hawkeye", + "era": "Mid Cold War", + "shortLabel": "E2", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "AWACS" + ] + } + ], + "filename": "e-2.png", + "enabled": true, + "liveries": { + "vaw-125 tigertails": { + "name": "VAW-125 Tigertails", + "countries": [ + "USA" + ] + }, + "e-2d demo": { + "name": "E-2D Demo", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "2 turboprop, straight wing, 5 crew. Hawkeye", + "abilities": "AEW, Carrier", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "E-3A": { + "name": "E-3A", + "coalition": "blue", + "label": "E-3A Sentry", + "era": "Mid Cold War", + "shortLabel": "E3", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "AWACS" + ] + } + ], + "filename": "e-3.png", + "enabled": true, + "liveries": { + "nato": { + "name": "nato", + "countries": [ + "USA", + "FRA", + "UK" + ] + }, + "usaf standard": { + "name": "usaf standard", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 17 crew. Sentry", + "abilities": "AEW", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "F-117A": { + "name": "F-117A", + "coalition": "blue", + "label": "F-117A Nighthawk", + "era": "Late Cold War", + "shortLabel": "117", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-12*2", + "name": "GBU-12*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-10*2", + "name": "GBU-10*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-27 - 2000lb Laser Guided Penetrator Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-27*2", + "name": "GBU-27*2", + "roles": [ + "Strike" + ] + } + ], + "filename": "f-117.png", + "enabled": true, + "liveries": { + "usaf standard": { + "name": "usaf standard", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, delta wing, 1 crew. Nighthawk", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "F-14A-135-GR": { + "name": "F-14A-135-GR", + "coalition": "blue", + "label": "F-14A-135-GR Tomcat", + "era": "Late Cold War", + "shortLabel": "14A", + "loadouts": [ + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", + "name": "AIM-54A-MK47*2, AIM-7F*1, AIM-9L*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*4, AIM-7F*2, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*4, AIM-7F*2, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*4, AIM-9L*4, XT*2", + "name": "AIM-54A-MK47*4, AIM-9L*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*4, AIM-9M*4, XT*2", + "name": "AIM-54A-MK47*4, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-20", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", + "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-20*2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 1 + }, + { + "name": "AIM-7F", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", + "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*1", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", + "name": "AIM-54A-MK60*1, AIM-7F*1, AIM-9L*2, XT*2, Mk-82*2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-20", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*4, AIM-9M*4, XT*2", + "name": "AIM-54A-MK60*4, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7F", + "quantity": 4 + }, + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-7F*4, AIM-9L*4, XT*2", + "name": "AIM-7F*4, AIM-9L*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7F", + "quantity": 6 + }, + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-7F*6, AIM-9L*2, XT*2", + "name": "AIM-7F*6, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "GBU-12", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", + "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "GBU-24", + "quantity": 1 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", + "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "3 BDU-33", + "quantity": 4 + } + ], + "enabled": true, + "code": "BDU-33*12", + "name": "BDU-33*12", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "MAK79 4 BDU-33", + "quantity": 2 + }, + { + "name": "MAK79 3 BDU-33", + "quantity": 2 + } + ], + "enabled": true, + "code": "BDU-33*14", + "name": "BDU-33*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-10*2", + "name": "GBU-10*2", + "roles": [ + "Strike", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "GBU-12", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-12*4", + "name": "GBU-12*4", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-16", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-16*4", + "name": "GBU-16*4", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-24*2", + "name": "GBU-24*2", + "roles": [ + "Strike", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "2 SUU-25 * 8 LUU-2", + "quantity": 1 + }, + { + "name": "SUU-25 * 8 LUU-2", + "quantity": 1 + } + ], + "enabled": true, + "code": "LUU-2*24", + "name": "LUU-2*24", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-20", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-20*4", + "name": "Mk-20*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MAK79 4 Mk-81", + "quantity": 2 + }, + { + "name": "MAK79 3 Mk-81", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-81*14", + "name": "Mk-81*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "MAK79 4 Mk-82", + "quantity": 2 + }, + { + "name": "MAK79 3 Mk-82", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-82*14", + "name": "Mk-82*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "Mk-82", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82*4", + "name": "Mk-82*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82AIR", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82AIR*4", + "name": "Mk-82AIR*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-83", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-83*4", + "name": "Mk-83*4", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Mk-84", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-84*4", + "name": "Mk-84*4", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "XT*2", + "name": "XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "2 LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + }, + { + "name": "LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + } + ], + "enabled": true, + "code": "Zuni*12", + "name": "Zuni*12", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "2 LAU-10 - 4 ZUNI MK 71", + "quantity": 3 + }, + { + "name": "LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + } + ], + "enabled": true, + "code": "Zuni*28", + "name": "Zuni*28", + "roles": [ + "Strike", + "CAS" + ] + } + ], + "filename": "f-14.png", + "enabled": true, + "liveries": { + "rogue nation(top gun - maverick)": { + "name": "Top Gun: Maverick - Rogue Nation", + "countries": "All" + }, + "vf-21 freelancers 200": { + "name": "VF-21 Freelancers 200", + "countries": "All" + }, + "vf-11 ae106 1988": { + "name": "VF-11 AE106 1988", + "countries": "All" + }, + "vf-301 nd113": { + "name": "VF-301 ND113 by Mach3DS", + "countries": "All" + }, + "vf-301 nd111": { + "name": "VF-301 ND111 by Mach3DS", + "countries": "All" + }, + "vf-154 black knights 101": { + "name": "00 - VF-154 Black Knights 101", + "countries": "All" + }, + "vf-14 tophatters aj206 (1999 allied force)": { + "name": "VF-14 Tophatters AJ206 (1999 Allied Force)", + "countries": "All" + }, + "vf-31 ae204 1988": { + "name": "VF-31 AE204 1988", + "countries": "All" + }, + "vf-1 wolfpack nk102 (1974)": { + "name": "VF-1 Wolfpack NK102 (1974)", + "countries": "All" + }, + "vf-33 starfighters ab201 (1988)": { + "name": "VF-33 Starfighters AB201(Dale Snodgrass)", + "countries": "All" + }, + "vf-31 1991 ae200": { + "name": "VF-31 1991 AE200 by Mach3DS", + "countries": "All" + }, + "vf-41 black aces aj100 (1999 allied force)": { + "name": "VF-41 Black Aces AJ100 (1999 Allied Force)", + "countries": "All" + }, + "vf-41 black aces aj101 (1999 allied force)": { + "name": "VF-41 Black Aces AJ101 (1999 Allied Force)", + "countries": "All" + }, + "vf-31 1991 ae205": { + "name": "VF-31 1991 AE205 by Mach3DS", + "countries": "All" + }, + "vf-41 black aces aj102 (1999 allied force)": { + "name": "VF-41 Black Aces AJ102 (1999 Allied Force)", + "countries": "All" + }, + "vf-1 wolfpack nk101 (1974)": { + "name": "VF-1 Wolfpack NK101 (1974)", + "countries": "All" + }, + "vf-31 ae200 1988": { + "name": "VF-31 AE200 1988", + "countries": "All" + }, + "vf-11 red rippers 106": { + "name": "VF-11 Red Rippers 106", + "countries": "All" + }, + "vf-1 wolfpack nk103 (1974)": { + "name": "VF-1 Wolfpack NK103 (1974)", + "countries": "All" + }, + "vf-14 tophatters ab103 (1976)": { + "name": "VF-14 Tophatters AB103(1976)", + "countries": "All" + }, + "vf-111 sundowners 200": { + "name": "VF-111 Sundowners 200", + "countries": "All" + }, + "top gun 114": { + "name": "Top Gun 114 Maverick and Goose", + "countries": "All" + }, + "vf-11 ae103 1988": { + "name": "VF-11 AE103 1988", + "countries": "All" + }, + "vx-4 vandy one sad bunny (1992)": { + "name": "VX-4 Vandy One Sad Bunny (1992)", + "countries": "All" + }, + "vf-211 fighting checkmates 100 (2001)": { + "name": "VF-211 Fighting Checkmates 100 (2001)", + "countries": [ + "USA" + ] + }, + "vf-301 nd104": { + "name": "VF-301 ND104 by Mach3DS", + "countries": "All" + }, + "vf-32 swordsmen ab200 (1976)": { + "name": "VF-32 Swordsmen AB200 (1976)", + "countries": "All" + }, + "vf-211 fighting checkmates 105": { + "name": "VF-211 Fighting Checkmates 105", + "countries": "All" + }, + "vf-14 tophatters ab100 (1976)": { + "name": "VF-14 Tophatters AB100(1976)", + "countries": "All" + }, + "vf-11 ae101 1988": { + "name": "VF-11 AE101 1988", + "countries": "All" + }, + "vf-14 tophatters aj202 (1999 allied force)": { + "name": "VF-14 Tophatters AJ202 (1999 Allied Force)", + "countries": "All" + }, + "vf-1 wolfpack nk100 (1974)": { + "name": "VF-1 Wolfpack NK100 (1974)", + "countries": "All" + }, + "vf-301 nd101 hivis": { + "name": "VF-301 ND101 HiVis by Mach3DS", + "countries": "All" + }, + "vf-14 tophatters aj201 (1999 allied force)": { + "name": "VF-14 Tophatters AJ201 (1999 Allied Force)", + "countries": "All" + }, + "vf-14 tophatters aj200 (1999) 80th aniversary": { + "name": "VF-14 Tophatters AJ200 (1999) 80th Anniversary", + "countries": "All" + }, + "vf-41 black aces aj104 (1999 allied force)": { + "name": "VF-41 Black Aces AJ104 (1999 Allied Force)", + "countries": "All" + } + }, + "type": "Aircraft", + "description": "2 Jet engine, swing wing, 2 crew. Tomcat", + "abilities": "Drogue AAR, Carrier", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "F-14B": { + "name": "F-14B", + "coalition": "blue", + "label": "F-14B Tomcat", + "era": "Late Cold War", + "shortLabel": "14B", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "XT*2", + "name": "XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*6, AIM-9M*2, XT*2", + "name": "AIM-54A-MK47*6, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*6, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*6, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*6, AIM-9M*2, XT*2", + "name": "AIM-54A-MK60*6, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 6 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*6, AIM-9M*2, XT*2", + "name": "AIM-54C-MK47*6, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7M", + "quantity": 6 + }, + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-7M*6, AIM-9M*2, XT*2", + "name": "AIM-7M*6, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7M", + "quantity": 6 + }, + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-7M*6, AIM-9L*2, XT*2", + "name": "AIM-7M*6, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", + "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*4, AIM-7M*2, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", + "name": "AIM-54A-MK60*4, AIM-7M*2, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", + "name": "AIM-54C-MK47*4, AIM-7M*2, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*2, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*2, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", + "name": "AIM-54A-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", + "name": "AIM-54A-MK60*2, AIM-7M*1, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", + "name": "AIM-54C-MK47*2, AIM-7M*1, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*4, AIM-9M*2, AIM-9L*2, XT*2", + "name": "AIM-54A-MK47*4, AIM-9M*2, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*4, AIM-9M*4, XT*2", + "name": "AIM-54A-MK47*4, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*4, AIM-9M*4, XT*2", + "name": "AIM-54A-MK60*4, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*4, AIM-9M*4, XT*2", + "name": "AIM-54C-MK47*4, AIM-9M*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9M", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", + "name": "AIM-7M*4, AIM-9M*2, AIM-9L*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7M", + "quantity": 4 + }, + { + "name": "LAU-138 AIM-9L", + "quantity": 2 + }, + { + "name": "LAU-7 AIM-9L", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-7M*4, AIM-9L*4, XT*2", + "name": "AIM-7M*4, AIM-9L*4, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 3 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk47", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "name": "AIM-54A-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 3 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", + "name": "AIM-54A-MK60*2, AIM-7M*3, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 3 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "AIM-54C-Mk47", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "name": "AIM-54C-MK47*2, AIM-7M*3, AIM-9M*2, XT*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "MAK79 4 BDU-33", + "quantity": 2 + }, + { + "name": "MAK79 3 BDU-33", + "quantity": 2 + } + ], + "enabled": true, + "code": "BDU-33*14", + "name": "BDU-33*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "3 BDU-33", + "quantity": 4 + } + ], + "enabled": true, + "code": "BDU-33*12", + "name": "BDU-33*12", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "GBU-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-10*2", + "name": "GBU-10*2", + "roles": [ + "Strike", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "GBU-12", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-12*4", + "name": "GBU-12*4", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-16", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-16*4", + "name": "GBU-16*4", + "roles": [ + "Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-24*2", + "name": "GBU-24*2", + "roles": [ + "Strike", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Mk-84", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-84*4", + "name": "Mk-84*4", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Mk-83", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-83*4", + "name": "Mk-83*4", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Mk-82", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82*4", + "name": "Mk-82*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MAK79 4 Mk-82", + "quantity": 2 + }, + { + "name": "MAK79 3 Mk-82", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-82*14", + "name": "Mk-82*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "MAK79 4 Mk-81", + "quantity": 2 + }, + { + "name": "MAK79 3 Mk-81", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-81*14", + "name": "Mk-81*14", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "Mk-20", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-20*4", + "name": "Mk-20*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-82AIR", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82AIR*4", + "name": "Mk-82AIR*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "2 LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + }, + { + "name": "LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + } + ], + "enabled": true, + "code": "Zuni*12", + "name": "Zuni*12", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "2 LAU-10 - 4 ZUNI MK 71", + "quantity": 3 + }, + { + "name": "LAU-10 - 4 ZUNI MK 71", + "quantity": 1 + } + ], + "enabled": true, + "code": "Zuni*28", + "name": "Zuni*28", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "2 SUU-25 * 8 LUU-2", + "quantity": 1 + }, + { + "name": "SUU-25 * 8 LUU-2", + "quantity": 1 + } + ], + "enabled": true, + "code": "LUU-2*24", + "name": "LUU-2*24", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 1 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*1", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*1", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-20", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "GBU-12", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", + "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-12*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "GBU-24", + "quantity": 1 + }, + { + "name": "AIM-7M", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", + "name": "AIM-7M*1, AIM-9M*2, XT*2, GBU-24*1, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-82", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-82*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + }, + { + "items": [ + { + "name": "LAU-138 AIM-9M", + "quantity": 2 + }, + { + "name": "LANTIRN Targeting Pod", + "quantity": 1 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 2 + }, + { + "name": "Mk-20", + "quantity": 2 + }, + { + "name": "AIM-7M", + "quantity": 1 + }, + { + "name": "AIM-54A-Mk60", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", + "name": "AIM-54A-MK60*1, AIM-7M*1, AIM-9M*2, XT*2, Mk-20*2, LANTIRN", + "roles": [ + "Strike", + "CAS", + "Runway Attack", + "Strike" + ] + } + ], + "filename": "f-14.png", + "enabled": true, + "liveries": { + "vf-103 sluggers 206 (1995)": { + "name": "VF-103 Sluggers 206 (1995)", + "countries": "All" + }, + "vf-143 pukin dogs low vis": { + "name": "VF-143 Pukin Dogs Low Vis (1998)", + "countries": "All" + }, + "rogue nation(top gun - maverick)": { + "name": "Top Gun: Maverick - Rogue Nation", + "countries": "All" + }, + "vf-31 tomcatters nk101 (2004)": { + "name": "VF-31 Tomcatters NK101 (2004)", + "countries": "All" + }, + "vf-32 fighting swordsmen 103": { + "name": "VF-32 Fighting Swordsmen 103 (1998)", + "countries": "All" + }, + "vf-103 jolly rogers hi viz": { + "name": "VF-103 Jolly Rogers Hi Viz", + "countries": "All" + }, + "vf-101 dark": { + "name": "VF-101 Dark", + "countries": "All" + }, + "vf-102 diamondbacks": { + "name": "01 - VF-102 Diamondbacks 1996", + "countries": "All" + }, + "vf-143 pukin dogs low vis (1995)": { + "name": "VF-143 Pukin Dogs Low Vis (1995)", + "countries": "All" + }, + "vx-4 xf-51 1988": { + "name": "VX-4 XF-51 1988", + "countries": "All" + }, + "top gun 114 hb weather": { + "name": "Top Gun 114 Maverick and Goose", + "countries": "All" + }, + "vf-24 renegades": { + "name": "VF-24 Renegades Low-Viz", + "countries": "All" + }, + "vf-11 red rippers (1997)": { + "name": "VF-11 Red Rippers (1997)", + "countries": "All" + }, + "vf-32 fighting swordsmen 100 (2000)": { + "name": "VF-32 Fighting Swordsmen 100 (2000)", + "countries": [ + "USA" + ] + }, + "vf-74 bedevilers 1991": { + "name": "VF-74 Be-Devilers 1991", + "countries": "All" + }, + "santa": { + "name": "Fictional Christmas Livery", + "countries": "All" + }, + "vf-103 sluggers 207 (1991)": { + "name": "VF-103 Sluggers 207 (1991)", + "countries": "All" + }, + "vf-32 fighting swordsmen 101": { + "name": "VF-32 Fighting Swordsmen 101 (1998)", + "countries": "All" + }, + "vf-103 last ride": { + "name": "VF-103 Last Ride", + "countries": "All" + }, + "vf-143 pukin dogs cag": { + "name": "VF-143 Pukin' Dogs CAG", + "countries": "All" + }, + "vx-9 vampires xf240 white whale": { + "name": "VX-9 Vampires XF240 White Whale", + "countries": "All" + }, + "vf-74 adversary": { + "name": "VF-74 Adversary", + "countries": "All" + }, + "vx-9 vandy 41 (1995)": { + "name": "VX-9 Vandy 41 (1995)", + "countries": "All" + }, + "vf-142 ghostriders": { + "name": "VF-142 Ghostriders", + "countries": "All" + }, + "vf-211 fighting checkmates": { + "name": "VF-211 Fighting Checkmates", + "countries": "All" + }, + "vf-101 grim reapers low vis": { + "name": "VF-101 Grim Reapers Low Vis", + "countries": "All" + }, + "chromecat": { + "name": "Fictional Chrome Cat ", + "countries": "All" + }, + "vf-32 fighting swordsmen 102": { + "name": "VF-32 Fighting Swordsmen 102 (1998)", + "countries": "All" + }, + "vf-102 diamondbacks 102": { + "name": "VF-102 Diamondbacks 102 (2000)", + "countries": "All" + }, + "vf-101 red": { + "name": "VF-101 Red", + "countries": "All" + } + }, + "type": "Aircraft", + "description": "2 Jet engine, swing wing, 2 crew. Tomcat", + "abilities": "Drogue AAR, Carrier", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "F-15C": { + "name": "F-15C", + "coalition": "blue", + "label": "F-15C Eagle", + "era": "Late Cold War", + "shortLabel": "15C", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel tank 610 gal", + "quantity": 3 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-120B*4, AIM-7M*2, AIM-9M*2, Fuel*3", + "name": "AIM-120B*4, AIM-7M*2, AIM-9M*2, Fuel*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9*2,AIM-120*6,Fuel", + "name": "AIM-9*2,AIM-120*6,Fuel", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 3 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-120*4,Fuel*3", + "name": "AIM-9*4,AIM-120*4,Fuel*3", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-120*4,Fuel", + "name": "AIM-9*4,AIM-120*4,Fuel", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 3 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel*3", + "name": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel*3", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 3 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-9*2,AIM-120*6,Fuel*3", + "name": "AIM-9*2,AIM-120*6,Fuel*3", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-7*4,Fuel", + "name": "AIM-9*4,AIM-7*4,Fuel", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120*8,Fuel", + "name": "AIM-120*8,Fuel", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 3 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-7*4,Fuel*3", + "name": "AIM-9*4,AIM-7*4,Fuel*3", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 3 + }, + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-120*8,Fuel*3", + "name": "AIM-120*8,Fuel*3", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", + "name": "AIM-9*2,AIM-120*2,AIM-7*4,Fuel", + "roles": [ + "CAP" + ] + } + ], + "filename": "f-15.png", + "enabled": true, + "liveries": { + "106th sqn (8th airbase)": { + "name": "106th SQN (8th Airbase)", + "countries": [ + "ISR" + ] + }, + "433rd weapons sqn (wa)": { + "name": "433rd Weapons SQN (WA)", + "countries": [ + "USA" + ] + }, + "493rd fighter sqn (ln)": { + "name": "493rd Fighter SQN (LN)", + "countries": [ + "USA" + ] + }, + "12th fighter sqn (ak)": { + "name": "12th Fighter SQN (AK)", + "countries": [ + "USA" + ] + }, + "390th fighter sqn": { + "name": "390th Fighter SQN", + "countries": [ + "USA" + ] + }, + "65th aggressor sqn (wa) flanker": { + "name": "65th Aggressor SQN (WA) Flanker", + "countries": [ + "USA", + "AUSAF" + ] + }, + "65th aggressor sqn (wa) super_flanker": { + "name": "65th Aggressor SQN (WA) SUPER_Flanker", + "countries": [ + "USA", + "AUSAF" + ] + }, + "65th aggressor sqn (wa) mig": { + "name": "65th Aggressor SQN (WA) MiG", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ferris scheme": { + "name": "Ferris Scheme", + "countries": [ + "USA" + ] + }, + "58th fighter sqn (eg)": { + "name": "58th Fighter SQN (EG)", + "countries": [ + "USA" + ] + }, + "haf aegean ghost": { + "name": "Hellenic Airforece - Aegean Ghost (Fictional)", + "countries": [ + "GRC" + ] + } + }, + "type": "Aircraft", + "description": "2 Jet engine, swept wing, 2 crew, all weather fighter. Eagle.", + "abilities": "Boom AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "F-16C_50": { + "name": "F-16C_50", + "coalition": "blue", + "label": "F-16C Viper", + "era": "Late Cold War", + "shortLabel": "16C", + "loadouts": [ + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", + "name": "AIM-120*2, AIM-9X*2, MK-82SE*4, FUEL*2, ECM, TGP", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 3 x Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", + "name": "AIM-120*2, AIM-9X*2, MK-82SE*6, FUEL*2, ECM, TGP", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120B*2, AIM-9M*4, FUEL*3", + "name": "AIM-120B*2, AIM-9M*4, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120B*4, AIM-9M*2, FUEL*3", + "name": "AIM-120B*4, AIM-9M*2, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120B AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120B*6, FUEL*3", + "name": "AIM-120B*6, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65D*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65D*2, FUEL*2, ECM, TGP", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65D*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 1 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65G, AGM-65K, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65G - Maverick G (IIR ASM - Lg Whd)", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65G*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65H*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65H*2, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65H - Maverick H (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65H*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65H*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, AGM-65K*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/ASQ-213 HTS - HARM Targeting System", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", + "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*2, ECM, TGP, HTS", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + }, + { + "name": "AN/ASQ-213 HTS - HARM Targeting System", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", + "name": "AIM-120C*2, AIM-9X*2, AGM-88C*2, FUEL*3, TGP, HTS", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 4 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/ASQ-213 HTS - HARM Targeting System", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", + "name": "AIM-120C*2, AIM-9X*2, AGM-88C*4, ECM, TGP, HTS", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "BRU-57 with 2 x CBU-103 - 202 x CEM, CBU with WCMD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, CBU-103*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, CBU-103*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "BRU-57 with 2 x CBU-105 - 10 x SFW, CBU with WCMD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, CBU-105*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, CBU-105*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, CBU-87*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x CBU-97 - 10 x SFW Cluster Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, CBU-97*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-10*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, GBU-12*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-12*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, GBU-12*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-12*4, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-24 Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, GBU-24*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-24*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-31(V)1/B - JDAM, 2000lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, GBU-31-1B*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-31-1B*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-31(V)3/B - JDAM, 2000lb GPS Guided Penetrator Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, GBU-31-3B*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-31-3B*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, GBU-38*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-38*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "BRU-57 with 2 x GBU-38 - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, GBU-38*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, GBU-38*4, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts Mk61, Practice", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-61*2, FUEL*2, ECM, TGP", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 3 x Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82*6, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82HD*4, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 3 x Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82HD*6, FUEL*2, ECM, TGP", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "TER-9A with 2 x Mk-82 AIR Ballute - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-82P*4, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*2, AIM-9X*2, MK-84*2, FUEL*2, ECM, TGP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*2, AIM-9X*4, FUEL*2", + "name": "AIM-120C*2, AIM-9X*4, FUEL*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/ASQ-213 HTS - HARM Targeting System", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", + "name": "AIM-120C*4, AGM-88C*2, FUEL*2, ECM, TGP, HTS", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + }, + { + "name": "AN/ASQ-213 HTS - HARM Targeting System", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AGM-88C*2, FUEL*3, TGP, HTS", + "name": "AIM-120C*4, AGM-88C*2, FUEL*3, TGP, HTS", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 4 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/ASQ-213 HTS - HARM Targeting System", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AGM-88C*4, ECM, TGP, HTS", + "name": "AIM-120C*4, AGM-88C*4, ECM, TGP, HTS", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*2", + "name": "AIM-120C*4, AIM-9X*2, FUEL*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", + "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", + "name": "AIM-120C*4, AIM-9X*2, FUEL*2, ECM, TGP", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*3", + "name": "AIM-120C*4, AIM-9X*2, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", + "name": "AIM-120C*4, AIM-9X*2, FUEL*3, TGP", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*2", + "name": "AIM-120C*6, FUEL*2", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*2, ECM", + "name": "AIM-120C*6, FUEL*2, ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "ALQ-184 Long - ECM Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*2, ECM, TGP", + "name": "AIM-120C*6, FUEL*2, ECM, TGP", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*3", + "name": "AIM-120C*6, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 6 + }, + { + "name": "Fuel tank 370 gal", + "quantity": 2 + }, + { + "name": "Fuel tank 300 gal", + "quantity": 1 + }, + { + "name": "AN/AAQ-28 LITENING - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C*6, FUEL*3, TGP", + "name": "AIM-120C*6, FUEL*3, TGP", + "roles": [ + "Escort" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + } + ], + "filename": "f-16c.png", + "enabled": true, + "liveries": { + "haf_347_perseus": { + "name": "HAF 347S Perseus Squadron", + "countries": [ + "GRC" + ] + }, + "ami, 5 stormo 23 gruppo": { + "name": "Italian Air Force, 5° Stormo, 23 Gruppo", + "countries": [ + "ITA" + ] + }, + "haf_337_ghost": { + "name": "HAF 337 Ghost Squadron", + "countries": [ + "GRC" + ] + }, + "haf_ 330_thunder": { + "name": "HAF 330 Thunder Squadron", + "countries": [ + "GRC" + ] + }, + "haf_336_olympus": { + "name": "HAF 336 Olympus Squadron", + "countries": [ + "GRC" + ] + }, + "iaf_117th_squadron": { + "name": "IAF 117th squadron", + "countries": [ + "ISR" + ] + }, + "jasdf 8th tfs": { + "name": "JASDF 8th TFS", + "countries": [ + "JPN" + ] + }, + "haf_340_fox": { + "name": "HAF 340 Fox Squadron", + "countries": [ + "GRC" + ] + }, + "haf_346_jason": { + "name": "HAF 346 Jason Squadron", + "countries": [ + "GRC" + ] + }, + "paf_no.9_griffins_1": { + "name": "PAF No.9 Griffins (TRIBUTE TO WC NAUMAN)", + "countries": [ + "PAK" + ] + }, + "522nd_fighter_squadron": { + "name": "522nd Fighter Squadron 'Fireballs'", + "countries": [ + "USA" + ] + }, + "default": { + "name": "default livery", + "countries": [ + "USA" + ] + }, + "18th agrs arctic splinter": { + "name": "18th AGRS Arсtic Splinter", + "countries": [ + "USA", + "AUSAF" + ] + }, + "iaf_115th_aggressors_squadron": { + "name": "IAF 115th aggressors squadron", + "countries": [ + "ISR" + ] + }, + "chile air force 732": { + "name": "Chile Air Force 732", + "countries": [ + "CHL" + ] + }, + "iaf_110th_squadron": { + "name": "IAF 110th squadron", + "countries": [ + "ISR" + ] + }, + "paf_no.29_aggressors": { + "name": "PAF No.29 Aggressor", + "countries": [ + "PAK" + ] + }, + "79th_fighter_squadron": { + "name": "79th Fighter Squadron 'Tigers'", + "countries": [ + "USA" + ] + }, + "paf_no.5_falcons": { + "name": "PAF No.5 Falcons", + "countries": [ + "PAK" + ] + }, + "18th agrs splinter": { + "name": "18th AGRS Blue Splinter", + "countries": [ + "USA", + "AUSAF" + ] + }, + "dark_viper": { + "name": "F-16C Dark Viper", + "countries": [ + "USA" + ] + }, + "jasdf 6th tfs": { + "name": "JASDF 6th TFS", + "countries": [ + "JPN" + ] + }, + "23rd_fighter_squadron": { + "name": "23rd Fighter Squadron 'Fighting Hawks'", + "countries": [ + "USA" + ] + }, + "polish af standard": { + "name": "Polish AF standard", + "countries": [ + "POL" + ] + }, + "480th_fighter_squadron": { + "name": "480th Fighter Squadron 'Warhawks'", + "countries": [ + "USA" + ] + }, + "18th agrs bdu splinter": { + "name": "18th AGRS BDU Splinter", + "countries": [ + "USA", + "AUSAF" + ] + }, + "174th_fighter_squadron": { + "name": "174th Fighter Squadron ANG,Iowa AFB", + "countries": [ + "USA" + ] + }, + "thk_191_filo": { + "name": "Türk Hava Kuvvetleri, 191 Filo", + "countries": [ + "TUR" + ] + }, + "chile air force 746": { + "name": "Chile Air Force 746", + "countries": [ + "CHL" + ] + }, + "haf_335_tiger": { + "name": "HAF 335 Tiger Squadron", + "countries": [ + "GRC" + ] + }, + "77th_fighter_squadron": { + "name": "77th Fighter Squadron 'Gamblers' ", + "countries": [ + "USA" + ] + }, + "132nd_wing _iowa_ang": { + "name": "132nd Wing Iowa ANG, Des Moines AFB", + "countries": [ + "USA" + ] + }, + "usaf 64th aggressor sqn-splinter": { + "name": "USAF 64th Aggressor SQN-Splinter", + "countries": [ + "USA", + "AUSAF" + ] + }, + "14th_fighter_squadron": { + "name": "14th Fighter Squadron 'Samurais'", + "countries": [ + "USA" + ] + }, + "152nd_fighter_squadron": { + "name": "152nd Fighter Squadron 'Las Vaqueros'", + "countries": [ + "USA" + ] + }, + "179th_fighter_squadron": { + "name": "179th Fighter Squadron 'Bulldogs'", + "countries": [ + "USA" + ] + }, + "paf_no.19_sherdils": { + "name": "PAF No.19 Sherdils", + "countries": [ + "PAK" + ] + }, + "64th_aggressor_squadron_ghost": { + "name": "64th Aggressor Squadron “Ghost", + "countries": [ + "USA", + "AUSAF" + ] + }, + "paf_no.9 griffins_2": { + "name": "PAF No.9 Griffins", + "countries": [ + "PAK" + ] + }, + "paf_no.11_arrows": { + "name": "PAF No.11 Arrows", + "countries": [ + "PAK" + ] + }, + "haf_343_star": { + "name": "HAF 343 Star Squadron", + "countries": [ + "GRC" + ] + }, + "80th_fighter_squadron": { + "name": "80th Fighter Squadron, Kunsan AFB", + "countries": [ + "USA" + ] + }, + "36th_fighter_squadron": { + "name": "36th Fighter Squadron Osan Air Base", + "countries": [ + "USA" + ] + }, + "22nd_fighter_squadron": { + "name": "22nd Fighter Squadron 'Stingers'", + "countries": [ + "USA" + ] + }, + "55th_fighter_squadron": { + "name": "55th Fighter Squadron 'Fifty Fifth'", + "countries": [ + "USA" + ] + }, + "iaf_101st_squadron": { + "name": "IAF 101st squadron", + "countries": [ + "ISR" + ] + }, + "polish_af_31blt6th_tactical_sqn": { + "name": "Polish AF 31.Blt 6th Tactical Sqn (Poznań-Krzesiny AB) - Tiger Meet", + "countries": [ + "POL" + ] + }, + "13th_fighter_squadron": { + "name": "13th Fighter Squadron 'Panthers'", + "countries": [ + "USA" + ] + }, + "haf_341_arrow": { + "name": "HAF 341 Arrow Squadron", + "countries": [ + "GRC" + ] + }, + "usaf 64th aggressor sqn - shark": { + "name": "USAF 64th Aggressor SQN - Shark", + "countries": [ + "USA", + "AUSAF" + ] + }, + "chile air force 851": { + "name": "Chile Air Force 851", + "countries": [ + "CHL" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 1 crew, all weather fighter and strike. Viper.", + "abilities": "Boom AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "F-4E": { + "name": "F-4E", + "coalition": "blue", + "label": "F-4E Phantom II", + "era": "Mid Cold War", + "shortLabel": "4", + "loadouts": [ + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-45*2,AIM-7*2,Fuel*2,ECM", + "name": "AGM-45*2,AIM-7*2,Fuel*2,ECM", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", + "quantity": 4 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-45*4,AIM-7*2,ECM", + "name": "AGM-45*4,AIM-7*2,ECM", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-65K*4,AIM-7*2,Fuel*2,ECM", + "name": "AGM-65K*4,AIM-7*2,Fuel*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65K - Maverick K (CCD Imp ASM)", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "F-4 Fuel tank-C", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-65K*4,AIM-7M*4,Fuel*3", + "name": "AGM-65K*4,AIM-7M*4,Fuel*3", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-118a with AGM-45B Shrike ARM (Imp)", + "quantity": 2 + }, + { + "name": "LAU-88 with 2 x AGM-65D - Maverick D (IIR ASM)", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM45*2_AGM-65D*4_AIM7*2_ECM", + "name": "AGM45*2_AGM-65D*4_AIM7*2_ECM", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "LAU-7 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-7*4", + "name": "AIM-9*4,AIM-7*4", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "LAU-7 with 2 x AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-9*4,AIM-7*4,Fuel*2", + "name": "AIM-9*4,AIM-7*4,Fuel*2", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "F-4 Fuel tank-C", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel*3", + "name": "Fuel*3", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-10*2,AIM-7*2,Fuel*2,ECM", + "name": "GBU-10*2,AIM-7*2,Fuel*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-12*2,AIM-7*2,Fuel*2,ECM", + "name": "GBU-12*2,AIM-7*2,Fuel*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MER6 with 6 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-82*18,AIM-7*2,ECM", + "name": "Mk-82*18,AIM-7*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-82 - 500lb GP Bombs LD", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-82*6,AIM-7*2,Fuel*2,ECM", + "name": "Mk-82*6,AIM-7*2,Fuel*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk-84*2,AIM-7*2,ECM", + "name": "Mk-84*2,AIM-7*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", + "quantity": 4 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk20*12,AIM-7*2,ECM", + "name": "Mk20*12,AIM-7*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "F-4 Fuel tank-W", + "quantity": 2 + }, + { + "name": "BRU-42 with 3 x Mk-20 Rockeye - 490lbs CBUs, 247 x HEAT Bomblets", + "quantity": 2 + }, + { + "name": "ALQ-131 - ECM Pod", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "Mk20*6,AIM-7*2,Fuel*2,ECM", + "name": "Mk20*6,AIM-7*2,Fuel*2,ECM", + "roles": [ + "CAS" + ] + } + ], + "filename": "f-4.png", + "enabled": false, + "liveries": { + "haf aegean ghost": { + "name": "Hellenic Airforce - Aegean Ghost", + "countries": [ + "GRC" + ] + }, + "iriaf asia minor": { + "name": "IRIAF Asia Minor", + "countries": [ + "IRN" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "GER" + ] + } + }, + "type": "Aircraft", + "description": "2 Jet engine, swept wing, 2 crew. Phantom", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "F-5E-3": { + "name": "F-5E-3", + "coalition": "blue", + "label": "F-5E Tiger", + "era": "Mid Cold War", + "shortLabel": "5", + "loadouts": [ + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9B*2", + "name": "AIM-9B*2", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9B*2, Fuel 150", + "name": "AIM-9B*2, Fuel 150", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9B*2, Fuel 150*3", + "name": "AIM-9B*2, Fuel 150*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9B*2, Fuel 275", + "name": "AIM-9B*2, Fuel 275", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9B*2, Fuel 275*3", + "name": "AIM-9B*2, Fuel 275*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9P*2", + "name": "AIM-9P*2", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9P*2, Fuel 150", + "name": "AIM-9P*2, Fuel 150", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9P*2, Fuel 150*3", + "name": "AIM-9P*2, Fuel 150*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9P*2, Fuel 275", + "name": "AIM-9P*2, Fuel 275", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9P*2, Fuel 275*3", + "name": "AIM-9P*2, Fuel 275*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P5 Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9P5*2", + "name": "AIM-9P5*2", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P5 Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9P5*2, Fuel 150", + "name": "AIM-9P5*2, Fuel 150", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P5 Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9P5*2, Fuel 150*3", + "name": "AIM-9P5*2, Fuel 150*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P5 Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9P5*2, Fuel 275", + "name": "AIM-9P5*2, Fuel 275", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P5 Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9P5*2, Fuel 275*3", + "name": "AIM-9P5*2, Fuel 275*3", + "roles": [ + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AN/ASQ-T50 TCTS Pod - ACMI Pod", + "quantity": 1 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 1 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AN/ASQ-T50, AIM-9P, Fuel 150", + "name": "AN/ASQ-T50, AIM-9P, Fuel 150", + "roles": [] + }, + { + "items": [ + { + "name": "AIM-9P5 Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + }, + { + "name": "F-5 150Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Antiship Mk82", + "name": "Antiship Mk82", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + }, + { + "name": "CBU-52B - 220 x HE/Frag bomblets", + "quantity": 4 + } + ], + "enabled": true, + "code": "CBU-52B*4,AIM-9P*2,Fuel 275", + "name": "CBU-52B*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "CBU-52B - 220 x HE/Frag bomblets", + "quantity": 5 + } + ], + "enabled": true, + "code": "CBU-52B*5,AIM-9*2", + "name": "CBU-52B*5,AIM-9*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-12*4,AIM-9P*2,Fuel 275", + "name": "GBU-12*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 1 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 2 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", + "name": "LAU-3 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 4 + } + ], + "enabled": true, + "code": "LAU-3 HE*4,AIM-9P*2,Fuel 275", + "name": "LAU-3 HE*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 4 + } + ], + "enabled": true, + "code": "LAU-3 HEAT*4,AIM-9P*2,Fuel 275", + "name": "LAU-3 HEAT*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 1 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 2 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", + "name": "LAU-68 HE*2,Mk-82LD,AIM-9P*2,Fuel 275*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 4 + } + ], + "enabled": true, + "code": "LAU-68 HE*4,AIM-9P*2,Fuel 275", + "name": "LAU-68 HE*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + }, + { + "name": "LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 4 + } + ], + "enabled": true, + "code": "LAU-68 HEAT*4,AIM-9P*2,Fuel 275", + "name": "LAU-68 HEAT*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + }, + { + "name": "M117 - 750lb GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "M-117*4,AIM-9P*2,Fuel 275", + "name": "M-117*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "M117 - 750lb GP Bomb LD", + "quantity": 5 + } + ], + "enabled": true, + "code": "M-117*5,AIM-9*2", + "name": "M-117*5,AIM-9*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82LD*4,AIM-9P*2,Fuel 275", + "name": "Mk-82LD*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 5 + } + ], + "enabled": true, + "code": "Mk-82LD*5,AIM-9*2", + "name": "Mk-82LD*5,AIM-9*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 2 + }, + { + "name": "5 x Mk-82 - 500lb GP Bombs LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82LD*7,AIM-9P*2, Fuel 275*2", + "name": "Mk-82LD*7,AIM-9P*2, Fuel 275*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 4 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82SE*4,AIM-9P*2,Fuel 275", + "name": "Mk-82SE*4,AIM-9P*2,Fuel 275", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 5 + } + ], + "enabled": true, + "code": "Mk-82SE*5,AIM-9*2", + "name": "Mk-82SE*5,AIM-9*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 2 + }, + { + "name": "F-5 275Gal Fuel tank", + "quantity": 2 + }, + { + "name": "5 x Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 1 + } + ], + "enabled": true, + "code": "Mk-82SE*7,AIM-9P*2, Fuel 275*2", + "name": "Mk-82SE*7,AIM-9P*2, Fuel 275*2", + "roles": [ + "CAS", + "Strike" + ] + } + ], + "liveryID": [ + "ir iriaf 43rd tfs" + ], + "filename": "f-5.png", + "enabled": true, + "liveries": { + "us aggressor vfc-13 40": { + "name": "Aggressor VFC-13 40", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ch swiss generic": { + "name": "Swiss Generic two-tone skin", + "countries": [ + "SUI" + ] + }, + "tw ngrc 5315": { + "name": "NGRC 5thFG 5315", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ch j-3079": { + "name": "J-3079", + "countries": [ + "SUI" + ] + }, + "sa royal saudi air force": { + "name": "Royal Saudi Air Force", + "countries": [ + "SAU" + ] + }, + "no 336 sq": { + "name": "336 Skvadron", + "countries": [ + "NOR" + ] + }, + "tw rocaf 7thfg(m)": { + "name": "ROCAF 7thFG(LV)", + "countries": [ + "USA", + "AUSAF" + ] + }, + "us aggressor vfc-111 105 wwii b": { + "name": "Sundowners VFC-111 105 WWII B", + "countries": [ + "USA", + "AUSAF" + ] + }, + "br fab 4828": { + "name": "2/1 GAvCa - FAB 4828", + "countries": [ + "BRA" + ] + }, + "usaf 'southeast asia'": { + "name": "USAF 'Southeast Asia'", + "countries": [ + "USA", + "AUSAF" + ] + }, + "br fab 4846": { + "name": "FAB 4846", + "countries": [ + "BRA" + ] + }, + "aggressor vfc-13 21": { + "name": "Aggressor VFC-13 21", + "countries": [ + "USA", + "AUSAF" + ] + }, + "no 334 sqn 373": { + "name": "RNoAF 334 sqn 373", + "countries": [ + "NOR" + ] + }, + "rocaf 7th fighter group": { + "name": "ROCAF 7th Fighter Group", + "countries": [ + "AUSAF" + ] + }, + "ch j-3036 2017": { + "name": "J-3036 Sion 2017", + "countries": [ + "SUI" + ] + }, + "us aggressor vfc-111 116": { + "name": "Sundowners VFC-116", + "countries": [ + "USA", + "AUSAF" + ] + }, + "black 'mig-28'": { + "name": "black 'Mig-28'", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ch j-3073 2017": { + "name": "J-3073_2017", + "countries": [ + "SUI" + ] + }, + "fi 11th fs lapland air command": { + "name": "FiAF 11th FS Lapland Air Command", + "countries": [ + "FIN" + ] + }, + "ir iriaf azarakhsh": { + "name": "HESA Azarakhsh", + "countries": [ + "IRN" + ] + }, + "ch j-3098": { + "name": "J-3098", + "countries": [ + "SUI" + ] + }, + "ir iriaf 43rd tfs": { + "name": "IRIAF - 43rd TFS", + "countries": [ + "IRN" + ] + }, + "no 338 sqn 215": { + "name": "RNoAF 338 sqn 215", + "countries": [ + "NOR" + ] + }, + "us usaf grape 31": { + "name": "USAF Grape 31", + "countries": [ + "USA", + "AUSAF" + ] + }, + "no 332 sqn ah-p": { + "name": "RNoAF 332 sqn AH-P", + "countries": [ + "NOR" + ] + }, + "ch j-3001 variante 1996": { + "name": "J-3001 GRD Emmen 1996", + "countries": [ + "SUI" + ] + }, + "us aggressor vfc-111 01": { + "name": "Sundowners VFC-111 01", + "countries": [ + "USA", + "AUSAF" + ] + }, + "3rd main jet base group command, turkey": { + "name": "133 squadron, 3rd Main Jet Base Group Command, Turkey", + "countries": [ + "TUR" + ] + }, + "kr rokaf 10th fighter wing": { + "name": "ROKAF 10th FW KF-5E 10-584", + "countries": [ + "KOR" + ] + }, + "sp spanish air force 21-51": { + "name": "Ejercito del Aire Camo 21-51", + "countries": [ + "SPN" + ] + }, + "aggressor vfc-13 11": { + "name": "Aggressor VFC-13 11", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ch j-3001 variante 1986": { + "name": "J-3001 GRD Emmen 1986", + "countries": [ + "SUI" + ] + }, + "usa standard": { + "name": "Standard Gray", + "countries": [ + "BRA", + "MYS", + "AUS", + "ABH", + "RUS", + "SPN", + "ISR", + "USA", + "BHR", + "BLR", + "HRV", + "RSO", + "SVK", + "IRN", + "UKR", + "TUR", + "JPN", + "PRK", + "SRB", + "KAZ", + "BGR", + "BEL", + "INS", + "THA", + "AUSAF", + "PAK", + "JOR", + "FIN", + "MEX", + "NOR", + "IRQ", + "SYR", + "ITA", + "GRC", + "POL", + "NETH", + "GER", + "SUI", + "CHN", + "SAU", + "SWE", + "ROU", + "FRA", + "KOR", + "HUN", + "AUT", + "GRG", + "DEN", + "TUN", + "EGY", + "IND", + "CZE", + "CAN", + "SDN", + "UK" + ] + }, + "5th fs merzifon air base, turkey": { + "name": "5th fs Merzifon air base, Turkish air force", + "countries": [ + "TUR" + ] + }, + "ch j-3001 variante 2000": { + "name": "J-3001 FlSt 08 2000", + "countries": [ + "SUI" + ] + }, + "ir iriaf camo": { + "name": "IRIAF F-5E Standard", + "countries": [ + "IRN" + ] + }, + "it aereonautica militare italiana": { + "name": "Aereonautica Militare Italiana", + "countries": [ + "ITA" + ] + }, + "ch j-3038": { + "name": "J-3038", + "countries": [ + "SUI" + ] + }, + "ch j-3033_2017": { + "name": "J-3033_2017", + "countries": [ + "SUI" + ] + }, + "us aggressor vfc-13 28 fict splinter": { + "name": "Aggressor VFC-13 28 Fictional Splinter", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ch j-3025": { + "name": "J-3025 FlSt 11/18 January 2006", + "countries": [ + "SUI" + ] + }, + "us aggressor vfc-13 01": { + "name": "Aggressor VFC-13 01", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ch patrouille suisse j-3088": { + "name": "Patrouille Suisse J-3088", + "countries": [ + "SUI" + ] + }, + "us aggressor vfc-13 25": { + "name": "Aggressor VFC-13 25", + "countries": [ + "USA", + "AUSAF" + ] + }, + "no 334 sqn ri-h": { + "name": "RNoAF 334 sqn RI-H", + "countries": [ + "NOR" + ] + }, + "br fab 4841": { + "name": "FAB 4841 60th an", + "countries": [ + "BRA" + ] + }, + "aggressor marine scheme": { + "name": "Aggressor Marine Scheme", + "countries": [ + "USA", + "AUSAF" + ] + }, + "sp spanish air force 464-48": { + "name": "Ejercito del Aire 464-48", + "countries": [ + "SPN" + ] + }, + "gr haf f-5e grey": { + "name": "HAF F-5E Grey", + "countries": [ + "GRC" + ] + }, + "tr turkish stars": { + "name": "Turkish Stars", + "countries": [ + "TUR" + ] + }, + "gb no.29 squadron raf": { + "name": "No.29 Squadron RAF (Fictional)", + "countries": [ + "UK" + ] + }, + "br fab 4834": { + "name": "1/1 GAvCa - FAB 4834", + "countries": [ + "BRA" + ] + }, + "ch j-3026": { + "name": "J-3026 FlSt 11 approx. 1989", + "countries": [ + "SUI" + ] + }, + "aggressor snake scheme": { + "name": "Aggressor Snake Scheme", + "countries": [ + "USA", + "AUSAF" + ] + }, + "us aggressor vfc-111 115": { + "name": "Sundowners VFC-115", + "countries": [ + "USA", + "AUSAF" + ] + }, + "us aggressor vmft-401 02 2011": { + "name": "Aggressor VMFT-401 02 2011", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ch j-3008": { + "name": "J-3008 FlSt 08/19 February 2005", + "countries": [ + "SUI" + ] + }, + "aggressor desert scheme": { + "name": "Aggressor Desert Scheme", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ch j-3074": { + "name": "J-3074", + "countries": [ + "SUI" + ] + }, + "ch j-3036": { + "name": "J-3036 FlSt 01 1985", + "countries": [ + "SUI" + ] + } + }, + "type": "Aircraft", + "description": "2 Jet engine, swept wing, single crew. Tiger", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "F-86F Sabre": { + "name": "F-86F Sabre", + "coalition": "blue", + "label": "F-86F Sabre", + "era": "Early Cold War", + "shortLabel": "86", + "loadouts": [ + { + "items": [ + { + "name": "Fuel Tank 120 gallons", + "quantity": 2 + } + ], + "enabled": true, + "code": "120gal Fuel*2", + "name": "120gal Fuel*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 200 gallons", + "quantity": 2 + }, + { + "name": "Fuel Tank 120 gallons", + "quantity": 2 + } + ], + "enabled": true, + "code": "120gal Fuel*2, 200gal Fuel*2", + "name": "120gal Fuel*2, 200gal Fuel*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 120 gallons", + "quantity": 2 + }, + { + "name": "LAU-7 with AIM-9B Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "120gal Fuel*2, GAR-8*2", + "name": "120gal Fuel*2, GAR-8*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 200 gallons", + "quantity": 2 + } + ], + "enabled": true, + "code": "200gal Fuel*2", + "name": "200gal Fuel*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 200 gallons", + "quantity": 2 + }, + { + "name": "AN-M64 - 500lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "200gal Fuel*2, AN-M64*2", + "name": "200gal Fuel*2, AN-M64*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 200 gallons", + "quantity": 2 + }, + { + "name": "2 x HVAR, UnGd Rkts", + "quantity": 4 + } + ], + "enabled": true, + "code": "200gal Fuel*2, HVARx2*4", + "name": "200gal Fuel*2, HVARx2*4", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "AN-M64 - 500lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AN-M64*2", + "name": "AN-M64*2", + "roles": [ + "CAS", + "Strike", + "Antiship Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-7 with AIM-9B Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "GAR-8*2", + "name": "GAR-8*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "2 x HVAR, UnGd Rkts", + "quantity": 8 + } + ], + "enabled": true, + "code": "HVAR*16", + "name": "HVAR*16", + "roles": [ + "Strike", + "CAS", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "M117 - 750lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "M117*2", + "name": "M117*2", + "roles": [ + "CAS", + "Strike", + "Antiship Strike" + ] + } + ], + "filename": "f-86.png", + "enabled": true, + "liveries": { + "us air force (skyblazers)": { + "name": "US Air Force Jet Team Skyblazer", + "countries": [ + "USA" + ] + }, + "canada air force": { + "name": "Canada Air Force", + "countries": [ + "CAN" + ] + }, + "us air force (squadron 39)": { + "name": "US Air Force (Squadron 39)", + "countries": [ + "USA" + ] + }, + "iiaf bare metall": { + "name": "IIAF Bare Metal Weathered", + "countries": [ + "IRN" + ] + }, + "us air force (green)": { + "name": "US Air Force (Green)", + "countries": [ + "USA" + ] + }, + "us air force (ex-usaf f-86a sabre)": { + "name": "US Air Force ex-USAF F-86A Sabre", + "countries": [ + "USA" + ] + }, + "default livery": { + "name": "default livery", + "countries": [ + "BRA", + "CUB", + "MYS", + "ARE", + "AUS", + "ABH", + "RUS", + "PHL", + "SPN", + "ISR", + "SUN", + "USA", + "BHR", + "MAR", + "BLR", + "HRV", + "DZA", + "OMN", + "RSO", + "SVK", + "HND", + "IRN", + "UKR", + "TUR", + "JPN", + "PRK", + "SRB", + "IDN", + "KAZ", + "BGR", + "BEL", + "INS", + "THA", + "LBY", + "AUSAF", + "VEN", + "PAK", + "JOR", + "RSA", + "FIN", + "MEX", + "KWT", + "NOR", + "IRQ", + "SYR", + "ITA", + "NZG", + "GRC", + "POL", + "NETH", + "GER", + "SUI", + "CHN", + "SAU", + "SWE", + "YEM", + "VNM", + "ROU", + "RSI", + "FRA", + "CHL", + "KOR", + "HUN", + "AUT", + "GRG", + "DEN", + "TUN", + "EGY", + "IND", + "CZE", + "ETH", + "CAN", + "SDN", + "QAT", + "UK", + "YUG" + ] + }, + "royal saudi air force": { + "name": "RSAF", + "countries": [ + "SAU" + ] + }, + "us air force": { + "name": "US Air Force", + "countries": [ + "USA" + ] + }, + "haf 342sqn": { + "name": "Hellenic Airforce 342sqn", + "countries": [ + "GRC" + ] + }, + "japan air force": { + "name": "Japan Air Force", + "countries": [ + "JPN" + ] + }, + "haf 341sqn": { + "name": "Hellenic Airforce 341sqn", + "countries": [ + "GRC" + ] + }, + "us air force (code fu-178)": { + "name": "US Air Force FU-178", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "Single engine, swept wing, 1 crew. Sabre", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "FA-18C_hornet": { + "name": "FA-18C_hornet", + "coalition": "blue", + "era": "Late Cold War", + "label": "F/A-18C", + "shortLabel": "18", + "loadouts": [ + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-84D Harpoon AShM", + "quantity": 4 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", + "name": "AIM-9M*2, AIM-120C-5*1, AGM-84D*4, ATFLIR, FUEL", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, AIM-7M*2, FUEL*1", + "name": "AIM-9M*2, AIM-7M*2, FUEL*1", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, AIM-7M*2, FUEL*2", + "name": "AIM-9M*2, AIM-7M*2, FUEL*2", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-115C with AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9M*2, AIM-7M*4, FUEL*3", + "name": "AIM-9M*2, AIM-7M*4, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M*2, ATFLIR, FUEL", + "name": "AIM-9M*2, ATFLIR, FUEL", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M*2, ATFLIR, FUEL*2", + "name": "AIM-9M*2, ATFLIR, FUEL*2", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x CBU-99 - 490lbs, 247 x HEAT Bomblets", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, CBU-99*4, FUEL*2", + "name": "AIM-9M*2, CBU-99*4, FUEL*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x LAU-61 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, LAU-61*4, FUEL*2", + "name": "AIM-9M*2, LAU-61*4, FUEL*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x LAU-68 pod - 7 x 2.75\" Hydra, UnGd Rkts Mk5, HEAT", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, LAU-68*4, FUEL*2", + "name": "AIM-9M*2, LAU-68*4, FUEL*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, MK-20*4, FUEL*2", + "name": "AIM-9M*2, MK-20*4, FUEL*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, MK-82*4, FUEL*2", + "name": "AIM-9M*2, MK-82*4, FUEL*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, MK-82SE*4, FUEL*2", + "name": "AIM-9M*2, MK-82SE*4, FUEL*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, MK-83*2, FUEL*2", + "name": "AIM-9M*2, MK-83*2, FUEL*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, MK-83*4, FUEL*2", + "name": "AIM-9M*2, MK-83*4, FUEL*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, MK-84*2, FUEL*2", + "name": "AIM-9M*2, MK-84*2, FUEL*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*2, ZUNI*4, FUEL*2", + "name": "AIM-9M*2, ZUNI*4, FUEL*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M*6, AIM-7M*2, FUEL*2", + "name": "AIM-9M*6, AIM-7M*2, FUEL*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-7M Sparrow Semi-Active Radar", + "quantity": 2 + }, + { + "name": "LAU-115 with 2 x LAU-127 AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9M*6, AIM-7M*2, FUEL*3", + "name": "AIM-9M*6, AIM-7M*2, FUEL*3", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM Active Rdr AAM", + "quantity": 6 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*6, FUEL*2", + "name": "AIM-9X*2, AIM-120C-5*6, FUEL*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM Active Rdr AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*2, FUEL*1", + "name": "AIM-9X*2, AIM-120C-5*2, FUEL*1", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "LAU-117 with AGM-65F - Maverick F (IIR ASM)", + "quantity": 4 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*1, AGM-65D*4, ATFLIR, FUEL", + "name": "AIM-9X*2, AIM-120C-5*1, AGM-65D*4, ATFLIR, FUEL", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-84H SLAM-ER (Expanded Response)", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + }, + { + "name": "AWW-13 DATALINK POD", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", + "name": "AIM-9X*2, AIM-120C-5*1, AGM-84E*2, DATALINK, ATFLIR, FUEL*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-31(V)4/B - JDAM, 2000lb GPS Guided Penetrator Bomb", + "quantity": 4 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", + "name": "AIM-9X*2, AIM-120C-5*1, GBU-31*4, ATFLIR, FUEL", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "BRU-55 with 2 x GBU-38 - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + }, + { + "name": "BRU-33 with 2 x GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AN/ASQ-228 ATFLIR - Targeting Pod", + "quantity": 1 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*1, GBU-38*4, GBU-12*4, ATFLIR, FUEL", + "name": "AIM-9X*2, AIM-120C-5*1, GBU-38*4, GBU-12*4, ATFLIR, FUEL", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 4 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", + "name": "AIM-9X*2, AIM-120C-5*2, AGM-88C*2, FUEL", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "LAU-115 with 2 x LAU-127 AIM-120C AMRAAM - Active Radar AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 3 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*6, FUEL*3", + "name": "AIM-9X*2, AIM-120C-5*6, FUEL*3", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "Carrier Landing", + "name": "Carrier Landing", + "roles": [] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + } + ], + "filename": "fa-18c.png", + "enabled": true, + "liveries": { + "vfa-192": { + "name": "VFA-192", + "countries": [ + "USA" + ] + }, + "nsawc brown splinter": { + "name": "NSAWC brown splinter", + "countries": [ + "USA", + "AUSAF" + ] + }, + "vfa-34": { + "name": "VFA-34", + "countries": [ + "USA" + ] + }, + "vmfa-232": { + "name": "VMFA-232", + "countries": [ + "USA" + ] + }, + "vmfat-101": { + "name": "VMFAT-101", + "countries": [ + "USA" + ] + }, + "vmfa-232 high visibility": { + "name": "VMFA-232 high visibility", + "countries": [ + "USA" + ] + }, + "vmfat-101 high visibility": { + "name": "VMFAT-101 high visibility", + "countries": [ + "USA" + ] + }, + "vfa-37": { + "name": "VFA-37", + "countries": [ + "USA" + ] + }, + "fictional russia air force": { + "name": "Fictional Russia Air Force", + "countries": [ + "AUSAF", + "RUS" + ] + }, + "canada 150 demo jet": { + "name": "Canada 150 Demo Jet", + "countries": [ + "CAN" + ] + }, + "fictional uk air force": { + "name": "Fictional UK Air Force", + "countries": [ + "UK" + ] + }, + "vfa-131": { + "name": "VFA-131", + "countries": [ + "USA" + ] + }, + "vmfa-122 high visibility": { + "name": "VMFA-122 high visibility", + "countries": [ + "USA" + ] + }, + "spain 462th escuadron c.15-79": { + "name": "Spain 462th Escuadron C.15-79", + "countries": [ + "SPN" + ] + }, + "vmfat-101 high visibility 2005": { + "name": "VMFAT-101 high visibility 2005", + "countries": [ + "USA" + ] + }, + "vmfa-323": { + "name": "VMFA-323", + "countries": [ + "USA" + ] + }, + "vx-31 cona": { + "name": "VX-31 CoNA", + "countries": [ + "USA" + ] + }, + "fictional turkey 162nd sq": { + "name": "162nd Sqn Harpoon", + "countries": [ + "TUR" + ] + }, + "nawdc brown": { + "name": "NAWDC brown", + "countries": [ + "USA", + "AUSAF" + ] + }, + "spain 151th escuadron c.15-14": { + "name": "Spain 151_14 Escuadron C.15-14", + "countries": [ + "SPN" + ] + }, + "spain 151th escuadron c.15-24": { + "name": "Spain 151_24 Escuadron C.15-24", + "countries": [ + "SPN" + ] + }, + "vfa-106": { + "name": "VFA-106", + "countries": [ + "USA" + ] + }, + "spain 121th escuadron c.15-45": { + "name": "Spain 121 Escuadron C.15-45", + "countries": [ + "SPN" + ] + }, + "vfa-97": { + "name": "VFA-97", + "countries": [ + "USA" + ] + }, + "vx-9": { + "name": "VX-9", + "countries": [ + "USA" + ] + }, + "spain 111th escuadron c.15-73": { + "name": "Spain 111 Escuadron C.15-73", + "countries": [ + "SPN" + ] + }, + "switzerland": { + "name": "Switzerland", + "countries": [ + "SUI" + ] + }, + "vx-23": { + "name": "VX-23", + "countries": [ + "USA" + ] + }, + "vfa-83": { + "name": "VFA-83", + "countries": [ + "USA" + ] + }, + "australian 75th squadron": { + "name": "Australian sqn 75", + "countries": [ + "AUS" + ] + }, + "canada 425th squadron": { + "name": "Canada 425th Squadron", + "countries": [ + "CAN" + ] + }, + "spain 151th escuadron c.15-18": { + "name": "Spain 151_18 Escuadron C.15-18", + "countries": [ + "SPN" + ] + }, + "nsawc gray": { + "name": "NSAWC gray", + "countries": [ + "USA" + ] + }, + "vfa-87": { + "name": "VFA-87", + "countries": [ + "USA" + ] + }, + "nawdc blue": { + "name": "NAWDC blue", + "countries": [ + "USA", + "AUSAF" + ] + }, + "australian 77th squadron": { + "name": "Australian sqn 77", + "countries": [ + "AUS" + ] + }, + "vmfa-251 high visibility": { + "name": "VMFA-251 high visibility", + "countries": [ + "USA" + ] + }, + "vmfa-531": { + "name": "VMFA-531", + "countries": [ + "USA" + ] + }, + "viper": { + "name": "Viper", + "countries": [ + "USA" + ] + }, + "iceman": { + "name": "Iceman", + "countries": [ + "USA", + "AUSAF" + ] + }, + "spain 121th escuadron c.15-60": { + "name": "Spain 121 Escuadron C.15-60", + "countries": [ + "SPN" + ] + }, + "nsawc blue": { + "name": "NSAWC blue", + "countries": [ + "USA", + "AUSAF" + ] + }, + "blue angels jet team": { + "name": "Blue Angels Jet Team", + "countries": [ + "USA" + ] + }, + "fictional israel air force": { + "name": "Fictional Israel Air Force", + "countries": [ + "ISR" + ] + }, + "spain 462th escuadron c.15-90": { + "name": "Spain 462th Escuadron C.15-90", + "countries": [ + "SPN" + ] + }, + "vmfa-323 high visibility": { + "name": "VMFA-323_high visibility", + "countries": [ + "USA" + ] + }, + "maverick": { + "name": "Maverick", + "countries": [ + "USA" + ] + }, + "nawdc black": { + "name": "NAWDC black", + "countries": [ + "USA", + "AUSAF" + ] + }, + "kuwait 9th squadron": { + "name": "9th Squadron", + "countries": [ + "KWT" + ] + }, + "vmfa-251": { + "name": "VMFA-251", + "countries": [ + "USA" + ] + }, + "vmfa-314": { + "name": "VMFA-314", + "countries": [ + "USA" + ] + }, + "fictional ukraine air force": { + "name": "Fictional Ukraine Air Force", + "countries": [ + "UKR" + ] + }, + "canada 409th squadron": { + "name": "Canada 409th Squadron", + "countries": [ + "CAN" + ] + }, + "canada norad 60 demo jet": { + "name": "Canada NORAD 60 Demo Jet", + "countries": [ + "CAN" + ] + }, + "spain 111th escuadron c.15-88": { + "name": "Spain 111 Escuadron C.15-88", + "countries": [ + "SPN" + ] + }, + "spain 211th escuadron c.15-76": { + "name": "Spain 211th Escuadron C.15-76", + "countries": [ + "SPN" + ] + }, + "finland 31": { + "name": "Finland", + "countries": [ + "FIN" + ] + }, + "spain 151th escuadron c.15-23": { + "name": "Spain 151_23 Escuadron C.15-23", + "countries": [ + "SPN" + ] + }, + "vfa-122": { + "name": "VFA-122", + "countries": [ + "USA" + ] + }, + "spain 151th escuadron c.15-14 tiger meet": { + "name": "Spain 151th Escuadron C.15-14 Tiger Meet", + "countries": [ + "SPN" + ] + }, + "vfc-12": { + "name": "VFC-12", + "countries": [ + "USA", + "AUSAF" + ] + }, + "spain 211th escuadron c.15-77": { + "name": "Spain 211th Escuadron C.15-77", + "countries": [ + "SPN" + ] + }, + "spain 121th escuadron c.15-34 50th anniversary": { + "name": "Spain 121th Escuadron C.15-34 34th Anniversary", + "countries": [ + "SPN" + ] + }, + "default livery": { + "name": "default livery", + "countries": [ + "BRA", + "CUB", + "MYS", + "ARE", + "AUS", + "ABH", + "RUS", + "PHL", + "SPN", + "ISR", + "SUN", + "USA", + "BHR", + "MAR", + "BLR", + "HRV", + "DZA", + "OMN", + "RSO", + "SVK", + "HND", + "IRN", + "UKR", + "TUR", + "JPN", + "PRK", + "SRB", + "IDN", + "KAZ", + "BGR", + "BEL", + "INS", + "THA", + "LBY", + "AUSAF", + "VEN", + "PAK", + "JOR", + "RSA", + "FIN", + "MEX", + "KWT", + "NOR", + "IRQ", + "SYR", + "ITA", + "NZG", + "GRC", + "POL", + "NETH", + "GER", + "SUI", + "CHN", + "SAU", + "SWE", + "YEM", + "VNM", + "ROU", + "RSI", + "FRA", + "CHL", + "KOR", + "HUN", + "AUT", + "GRG", + "DEN", + "TUN", + "EGY", + "IND", + "CZE", + "ETH", + "CAN", + "SDN", + "QAT", + "UK", + "YUG" + ] + }, + "spain 121th escuadron c.15-50": { + "name": "Spain 121 Escuadron C.15-50", + "countries": [ + "SPN" + ] + }, + "vfa-113": { + "name": "VFA-113", + "countries": [ + "USA" + ] + }, + "vmfa-312": { + "name": "VMFA-312", + "countries": [ + "USA" + ] + }, + "kuwait 25th squadron": { + "name": "9th Squadron", + "countries": [ + "KWT" + ] + }, + "vmfa-312 high visibility": { + "name": "VMFA-312 high visibility", + "countries": [ + "USA" + ] + }, + "vmfa-122": { + "name": "VMFA-122", + "countries": [ + "USA" + ] + }, + "vfa-106 high visibility": { + "name": "VFA-106 high visibility", + "countries": [ + "USA" + ] + }, + "finland 21": { + "name": "Finland", + "countries": [ + "FIN" + ] + } + }, + "type": "Aircraft", + "description": "2 Jet engine, swept wing, 1 crew, fighter and strike. Hornet", + "abilities": "Drogue AAR, Carrier", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "FW-190A8": { + "name": "FW-190A8", + "coalition": "red", + "label": "FW-190A8 Würger", + "era": "WW2", + "shortLabel": "190", + "loadouts": [ + { + "items": [ + { + "name": "AB 250-2 - 17 x SD-10A, 250kg CBU with 10kg Frag/HE submunitions", + "quantity": 1 + } + ], + "enabled": true, + "code": "AB 250 (w/ SD 10A)", + "name": "AB 250 (w/ SD 10A)", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AB 250-2 - 144 x SD-2, 250kg CBU with HE submunitions", + "quantity": 1 + } + ], + "enabled": true, + "code": "AB 250 (w/ SD 2)", + "name": "AB 250 (w/ SD 2)", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AB 500-1 - 34 x SD-10A, 500kg CBU with 10kg Frag/HE submunitions", + "quantity": 1 + } + ], + "enabled": true, + "code": "AB 500 (w/ SD 10A)", + "name": "AB 500 (w/ SD 10A)", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", + "quantity": 2 + } + ], + "enabled": true, + "code": "BR 21", + "name": "BR 21", + "roles": [] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "300 liter Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel Tank 300 liters", + "name": "Fuel Tank 300 liters", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "SC 250 Type 3 J - 250kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC 250 J", + "name": "SC 250 J", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "SC 250 Type 1 L2 - 250kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC 250 L2", + "name": "SC 250 L2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "4 x SC 50 - 50kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC 50 * 4", + "name": "SC 50 * 4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "SC 500 J - 500kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC 500 J", + "name": "SC 500 J", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "SC 500 L2 - 500kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC 500 L2", + "name": "SC 500 L2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "SD 250 Stg - 250kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SD 250 Stg", + "name": "SD 250 Stg", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "SD 500 A - 500kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SD 500 A", + "name": "SD 500 A", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 1 + } + ], + "enabled": true, + "code": "Without pylon", + "name": "Without pylon", + "roles": [] + } + ], + "filename": "fw190.png", + "enabled": true, + "liveries": { + "fw190_fuselage_d_jg301": { + "name": "JG 301", + "countries": [ + "GER", + "NZG" + ] + }, + "captured_ra": { + "name": "Captured_RA", + "countries": [ + "SUN" + ] + }, + "fictional ijn carrier akagi ai-103": { + "name": "Fictional IJN Carrier Akagi AI-103", + "countries": [ + "JPN" + ] + }, + "fictional ijn otu tsukuba tsu-102": { + "name": "Fictional IJN OTU Tsukuba Tsu-102", + "countries": [ + "JPN" + ] + }, + "fw-190a8 yellow 4": { + "name": "FW190A8 Yellow 4", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190a8 rhaf": { + "name": "Fw 190 A8 RHAF", + "countries": [ + "HUN" + ] + }, + "jg3 white nose wulf": { + "name": "Fw190A8 'White nose Wulf'", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190a8_2.jg 54": { + "name": "2.JG 54", + "countries": [ + "GER", + "NZG" + ] + }, + "fictional ijn carrier soryu bi-112": { + "name": "Fictional IJN Carrier Soryu BI-112", + "countries": [ + "JPN" + ] + }, + "black 13 schwarze katze from jg1": { + "name": "Fw190_JG1_Gen._'Schwarze Katze'_Win.", + "countries": [ + "GER", + "NZG" + ] + }, + "turkish air force, 5th fr (1942)": { + "name": "Turkish Air Force, 5th FR (1942)", + "countries": [ + "AUSAF", + "TUR" + ] + }, + "fw-190a8 jg26 priller": { + "name": "Fw 190 A8 JG26 Priller", + "countries": [ + "GER", + "HUN", + "NZG" + ] + }, + "inspired by jg2 skin of early fw 190a": { + "name": "Fw190A8 JG2 Generic", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190a8": { + "name": "FW190A8", + "countries": "All" + }, + "fw190_alfred_bindseil": { + "name": "6.JG 1_Alfred Bindseil", + "countries": [ + "GER", + "NZG" + ] + }, + "fictional ijn 256th kokutai rai-153": { + "name": "Fictional IJN 256th Kokutai Rai-153", + "countries": [ + "JPN" + ] + }, + "fictional ijn carrier akagi ai-151": { + "name": "Fictional IJN Carrier Akagi AI-151", + "countries": [ + "JPN" + ] + }, + "fw-190a8_raf": { + "name": "FW190A8/R-2 PE882, No. 1426 Flight RAF - Late", + "countries": [ + "UK" + ] + }, + "factory skin": { + "name": "FW190A8 Luftwaffe", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190a8_2.jg 54_hans dortenmann": { + "name": "2.JG 54_Hans Dortenmann", + "countries": [ + "GER", + "NZG" + ] + }, + "fw 190 a-8 czech avia s.90": { + "name": "Fw 190 A-8 Czech Avia S.90", + "countries": [ + "CZE" + ] + }, + "fw190_ewald_preisz": { + "name": "6.JG 300_Ewald Preisz", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190a8 jg3 maximowitz": { + "name": "Fw 190 A8 JG3 Maximowitz", + "countries": [ + "GER", + "HUN", + "NZG" + ] + }, + "roaf-grupul7": { + "name": "RoAF-Grupul7", + "countries": [ + "ROU" + ] + } + }, + "type": "Aircraft", + "description": "Single propellor, straight wing, 1 crew. Würger ", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "FW-190D9": { + "name": "FW-190D9", + "coalition": "red", + "label": "FW-190D9 Dora", + "era": "WW2", + "shortLabel": "190", + "loadouts": [ + { + "items": [ + { + "name": "Werfer-Granate 21 - 21 cm UnGd air-to-air rocket", + "quantity": 2 + } + ], + "enabled": true, + "code": "BR 21", + "name": "BR 21", + "roles": [ + "CAP", + "CAP", + "Strike", + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "300 liter Fuel Tank Type E2", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel Tank", + "name": "Fuel Tank", + "roles": [ + "CAP", + "FAC-A", + "Escort" + ] + }, + { + "items": [ + { + "name": "13 R4M 3.2kg UnGd air-to-air rocket", + "quantity": 2 + } + ], + "enabled": true, + "code": "R4M", + "name": "R4M", + "roles": [ + "CAP", + "CAP", + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "SC 500 J - 500kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "SC500", + "name": "SC500", + "roles": [ + "Runway Attack", + "CAS", + "Antiship Strike", + "Strike" + ] + } + ], + "filename": "fw190.png", + "enabled": true, + "liveries": { + "fw-190d9_5jg301": { + "name": "FW-190_5JG301.1945", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190d9_iv.jg 26_hans dortenmann": { + "name": " Oblt. Hans Dortenmann, IV./JG 26, 1945", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190d9_red": { + "name": "FW_190D9_Red.1945", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190d9_13.jg 51_heinz marquardt": { + "name": " Heinz-Marquardt, 13./JG 51, 1945", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190d9_jg54": { + "name": "FW-190D9_JG54.1945", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190d9_black 4 of stab iijg 6": { + "name": "FW-190D9_Black <4 of Stab II/JG 6", + "countries": [ + "GER", + "NZG" + ] + }, + "fw-190d9_usa": { + "name": "FW-190_USA_Standard.1943", + "countries": [ + "USA" + ] + }, + "fw-190d9_gb": { + "name": "FW-190_GB_Standart.1943", + "countries": [ + "UK" + ] + }, + "fw-190d9_ussr": { + "name": "FW-190 WNr 210251 USSR (Captured. 1943)", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "Single propellor, straight wing, 1 crew. Dora", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "H-6J": { + "name": "H-6J", + "coalition": "red", + "label": "H-6 J Badger", + "era": "Mid Cold War", + "shortLabel": "H6", + "loadouts": [ + { + "items": [ + { + "name": "12 x 250-2 - 250kg GP Bombs HD", + "quantity": 1 + } + ], + "enabled": true, + "code": "250-2 HD Bomb x 12 in Bay", + "name": "250-2 HD Bomb x 12 in Bay", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "24 x 250-2 - 250kg GP Bombs HD", + "quantity": 1 + } + ], + "enabled": true, + "code": "250-2 HD Bomb x 24 in Bay", + "name": "250-2 HD Bomb x 24 in Bay", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MER6 - 6 x 250-3 - 250kg GP Bombs LD", + "quantity": 6 + } + ], + "enabled": true, + "code": "250-3 LD Bomb x 36", + "name": "250-3 LD Bomb x 36", + "roles": [ + "Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "KD-20", + "quantity": 4 + } + ], + "enabled": true, + "code": "KD-20 x 4", + "name": "KD-20 x 4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "KD-20", + "quantity": 6 + } + ], + "enabled": true, + "code": "KD-20 x 6", + "name": "KD-20 x 6", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "KD-63", + "quantity": 2 + }, + { + "name": "DATA-LINK POD", + "quantity": 1 + }, + { + "name": "KD-20", + "quantity": 2 + } + ], + "enabled": true, + "code": "KD-63 x 2, KD-20 x 2", + "name": "KD-63 x 2, KD-20 x 2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "KD-63", + "quantity": 2 + }, + { + "name": "DATA-LINK POD", + "quantity": 1 + }, + { + "name": "KD-20", + "quantity": 4 + } + ], + "enabled": true, + "code": "KD-63 x 2, KD-20 x 4", + "name": "KD-63 x 2, KD-20 x 4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "KD-63", + "quantity": 4 + }, + { + "name": "DATA-LINK POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "KD-63 x 4", + "name": "KD-63 x 4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "YJ-12", + "quantity": 2 + } + ], + "enabled": true, + "code": "YJ-12 x 2", + "name": "YJ-12 x 2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "YJ-12", + "quantity": 4 + } + ], + "enabled": true, + "code": "YJ-12 x 4", + "name": "YJ-12 x 4", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "YJ-83K", + "quantity": 6 + } + ], + "enabled": true, + "code": "YJ-83K x 6", + "name": "YJ-83K x 6", + "roles": [ + "Antiship Strike" + ] + } + ], + "filename": "h-6.png", + "enabled": true, + "liveries": { + "planaf standard": { + "name": "PLANAF Standard", + "countries": [ + "CHN" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 4 crew bomber. Badger", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "I-16": { + "name": "I-16", + "coalition": "red", + "label": "I-16", + "era": "WW2", + "shortLabel": "I16", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "RS-82", + "quantity": 6 + } + ], + "enabled": true, + "code": "6xRS-82", + "name": "6xRS-82", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100SV", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xFAB-100", + "name": "2xFAB-100", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "RS-82", + "quantity": 6 + }, + { + "name": "FAB-100SV", + "quantity": 2 + } + ], + "enabled": true, + "code": "6xRS-82, 2xFAB-100", + "name": "6xRS-82, 2xFAB-100", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "RS-82", + "quantity": 6 + }, + { + "name": "I-16 External Fuel Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "6xRS-82, 2xDropTank-93L", + "name": "6xRS-82, 2xDropTank-93L", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "I-16 External Fuel Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "2xDropTank-93L", + "name": "2xDropTank-93L", + "roles": [ + "CAP", + "Reconnaissance", + "Escort" + ] + } + ], + "filename": "i-16.png", + "enabled": true, + "liveries": { + "silver-black demo": { + "name": "Silver-black paint scheme", + "countries": [ + "SUN", + "RUS" + ] + }, + "red army camo": { + "name": "Red Army Air Force Camouflage", + "countries": [ + "SUN", + "RUS" + ] + }, + "spain nationalists": { + "name": "Spain (Nationalists)", + "countries": [ + "SPN", + "NZG" + ] + }, + "japan": { + "name": "Japan (Captured), Manchuria 1939", + "countries": [ + "NZG", + "JPN" + ] + }, + "finnish af": { + "name": "Finland, AFB Rompotti 1943", + "countries": [ + "FIN", + "NZG" + ] + }, + "red army standard": { + "name": "1 Red Army Air Force Standard", + "countries": [ + "SUN", + "RUS" + ] + }, + "spain republicans": { + "name": "Spain (Republicans)", + "countries": [ + "SUN", + "SPN" + ] + }, + "red five demo": { + "name": "RED FIVE Aerobatic Team", + "countries": [ + "SUN", + "RUS" + ] + }, + "clear": { + "name": "Green unmarked", + "countries": "All" + }, + "silver demo": { + "name": "Silver paint scheme", + "countries": [ + "SUN", + "RUS" + ] + }, + "red army winter": { + "name": "Red Army Air Force winter", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "Single propellor, straight wing, 1 crew. Ishak", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "IL-76MD": { + "name": "IL-76MD", + "coalition": "red", + "label": "IL-76MD Candid", + "era": "Mid Cold War", + "shortLabel": "76", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Transport" + ] + } + ], + "filename": "il-76.png", + "enabled": true, + "liveries": { + "ukrainian af aeroflot": { + "name": "Ukrainian AF aeroflot", + "countries": [ + "UKR" + ] + }, + "algerian af il-76md": { + "name": "Algerian AF IL-76MD", + "countries": [ + "DZA" + ] + }, + "china air force old": { + "name": "China Air Force Old", + "countries": [ + "CHN" + ] + }, + "ukrainian af": { + "name": "Ukrainian AF", + "countries": [ + "UKR" + ] + }, + "rf air force": { + "name": "RF Air Force", + "countries": [ + "RUS" + ] + }, + "china air force new": { + "name": "China Air Force New", + "countries": [ + "CHN" + ] + }, + "mvd aeroflot": { + "name": "MVD aeroflot", + "countries": [ + "RUS" + ] + }, + "fsb aeroflot": { + "name": "FSB aeroflot", + "countries": [ + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 5 crew. Cargo and passenger aircraft. NATO reporting name: Candid", + "abilities": "AEW", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "IL-78M": { + "name": "IL-78M", + "coalition": "red", + "label": "IL-78M Midas", + "era": "Late Cold War", + "shortLabel": "78", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Tanker" + ] + } + ], + "filename": "il-76.png", + "enabled": true, + "liveries": { + "rf air force aeroflot": { + "name": "RF Air Force aeroflot", + "countries": [ + "SUN", + "RUS" + ] + }, + "rf air force new": { + "name": "RF Air Force new", + "countries": [ + "RUS" + ] + }, + "algerian af il-78m": { + "name": "Algerian AF IL-78M", + "countries": [ + "DZA" + ] + }, + "china air force": { + "name": "China Air Force", + "countries": [ + "CHN" + ] + }, + "rf air force": { + "name": "RF Air Force", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 6 crew. Tanker aircraft. NATO reporting name: Midas", + "abilities": "Tanker, Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "J-11A": { + "name": "J-11A", + "coalition": "red", + "label": "J-11A Flaming Dragon", + "era": "Modern", + "shortLabel": "J11", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 6 + } + ], + "enabled": true, + "code": "FAB-100x36,R-73x2,ECM", + "name": "FAB-100x36,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x FAB-250", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250x8,R-73x2,ECM", + "name": "FAB-250x8,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x FAB-500", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500x8,R-73x2,ECM", + "name": "FAB-500x8,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-8M1 - 20 S-8KOM", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-8KOMx80,FAB-250x4,R-73x2,ECM", + "name": "S-8KOMx80,FAB-250x4,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-13L - 5 S-13 OF", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-13x20,FAB-250x4,R-73x2,ECM", + "name": "S-13x20,FAB-250x4,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x S-25", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-25x4,FAB-500x4,R-73x2,ECM", + "name": "S-25x4,FAB-500x4,R-73x2,ECM", + "roles": [ + "Strike", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-27ERx4,R-27ETx2,R-73x2,ECM", + "name": "R-27ERx4,R-27ETx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 6 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-77x6,R-73x2,ECM", + "name": "R-77x6,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-27ERx6,R-73x2,ECM", + "name": "R-27ERx6,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-77x4,R-27ETx2,R-73x2,ECM", + "name": "R-77x4,R-27ETx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-77x4,R-27ERx2,R-73x2,ECM", + "name": "R-77x4,R-27ERx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 6 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500ShPx6,R-73x2,ECM", + "name": "BetAB-500ShPx6,R-73x2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73x4,ECM", + "name": "R-73x4,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-77x2,R-27ETx2,R-73x2,ECM", + "name": "R-77x2,R-27ETx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-77x6,R-73x4", + "name": "R-77x6,R-73x4", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", + "name": "R-77x2,R-27ETx2,R-27ERx2,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-27ETx2,R-27ERx4,R-73x2,ECM", + "name": "R-27ETx2,R-27ERx4,R-73x2,ECM", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-8M1 - 20 S-8TsM", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-8TsMx80,FAB-250x4,R-73x2,ECM", + "name": "S-8TsMx80,FAB-250x4,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-8M1 - 20 S-8OFP2", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-8OFP2x80,FAB-250x4,R-73x2,ECM", + "name": "S-8OFP2x80,FAB-250x4,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "FAB-250x18,R-73x2,ECM", + "name": "FAB-250x18,R-73x2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-8M1 - 20 S-8KOM", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*S8-KOMx2, R-73x2, ECM", + "name": "2*S8-KOMx2, R-73x2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "RKL609 ECM Pod (Right)", + "quantity": 1 + }, + { + "name": "RKL609 ECM Pod (Left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x B-8M1 - 20 S-8OFP2", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*S8-OFP2x2, R-73x2, ECM", + "name": "2*S8-OFP2x2, R-73x2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "2 x FAB-500", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250x4, 2*FAB-500x2, R-73x2", + "name": "FAB-250x4, 2*FAB-500x2, R-73x2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "2 x FAB-250", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250x4, 2*FAB-250x2, R-73x2", + "name": "FAB-250x4, 2*FAB-250x2, R-73x2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + }, + { + "name": "RBK-250-275 - 150 x AO-1SCh, 250kg CBU HE/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", + "name": "RBK-250 HEAT/APx2, RBK-250 HE/Fragx2, R-73x2", + "roles": [ + "CAS" + ] + } + ], + "filename": "su-27.png", + "enabled": true, + "liveries": { + "plaaf 19th ad": { + "name": "PLAAF 19th AD", + "countries": [ + "CHN" + ] + }, + "plaaf 17th ab": { + "name": "PLAAF 17th AB", + "countries": [ + "CHN" + ] + }, + "plaaf 18th ad 'thunderclap wing' (fictional)": { + "name": "PLAAF 18th AD 'Thunderclap Wing' (Fictional)", + "countries": [ + "CHN" + ] + }, + "usn aggressor vfc-13 'ferris' (fictional)": { + "name": "Aggressor VFC-13 'Ferris' (Fictional)", + "countries": [ + "AUSAF" + ] + }, + "plaaf 19th ad (reworked)": { + "name": "PLAAF 19th AD (Reworked)", + "countries": [ + "CHN" + ] + }, + "plaaf 14th ad": { + "name": "PLAAF 14th AD", + "countries": [ + "CHN" + ] + }, + "plaaf 6th ad": { + "name": "PLAAF 6th AD", + "countries": [ + "CHN" + ] + }, + "plaaf 14th ad (reworked)": { + "name": "PLAAF 14th AD (Reworked)", + "countries": [ + "CHN" + ] + }, + "plaaf opfor 'desert' (fictional)": { + "name": "PLAAF OPFOR 'Desert' (Fictional)", + "countries": [ + "CHN" + ] + }, + "plaaf 7th ad (reworked)": { + "name": "PLAAF 7th AD (Reworked)", + "countries": [ + "CHN" + ] + }, + "usaf 65th aggressor sqn 'desert' (fictional)": { + "name": "65th Aggressor SQN 'Desert' (Fictional)", + "countries": [ + "AUSAF" + ] + }, + "sky hunter": { + "name": "Sky Hunter", + "countries": [ + "CHN" + ] + }, + "plaaf 2nd ad (parade)": { + "name": "PLAAF 2nd AD (Parade)", + "countries": [ + "CHN" + ] + }, + "plaaf opfor 'jungle' (fictional)": { + "name": "PLAAF OPFOR 'Jungle' (Fictional) ", + "countries": [ + "CHN" + ] + }, + "plaaf 33th ad (reworked)": { + "name": "PLAAF 33th AD (Reworked)", + "countries": [ + "CHN" + ] + }, + "plaaf 33th ad": { + "name": "PLAAF 33th AD", + "countries": [ + "CHN" + ] + }, + "usaf 65th aggressor sqn 'gray' (fictional)": { + "name": "65th Aggressor SQN 'Gray' (Fictional)", + "countries": [ + "AUSAF" + ] + }, + "plaaf 2nd ad": { + "name": "PLAAF 2nd AD", + "countries": [ + "CHN" + ] + }, + "plaaf 7th ad": { + "name": "PLAAF 7th AD", + "countries": [ + "CHN" + ] + }, + "plaaf ghost gray (fictional)": { + "name": "PLAAF Ghost Gray (Fictional)", + "countries": [ + "CHN" + ] + }, + "plaaf 2nd ad (reworked)": { + "name": "PLAAF 2nd AD (Reworked)", + "countries": [ + "CHN" + ] + } + }, + "type": "Aircraft", + "description": "2 Jet engine, swept wing, 1 crew, fighter and strike. NATO reporting name: Flanker", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "JF-17": { + "name": "JF-17", + "coalition": "red", + "label": "JF-17 Thunder", + "era": "Modern", + "shortLabel": "J17", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "C802AK (DIS)", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C802AKx2, 800L Tank", + "name": "PL-5Ex2, C802AKx2, 800L Tank", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", + "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, 800L Tank", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, WMD7", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, WMD7", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 800L Tank, WMD7", + "name": "PL-5Ex2, 800L Tank, WMD7", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "GBU-10", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, GBU-10x2, WMD7", + "name": "PL-5Ex2, GBU-10x2, WMD7", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "GDJ-II19 - 2 x GBU-12", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, 800L Tank, WMD7", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", + "name": "PL-5Ex2, 2*Mk-82x2, Mk-83x2, 800L Tank", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 1100L Tankx2, 800L Tank", + "name": "PL-5Ex2, 1100L Tankx2, 800L Tank", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "CM802AKG (DIS)", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "DATA-LINK POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", + "name": "PL-5Ex2, WMD7, CM802AKGx2, 800L Tank, DL", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "C-701T", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", + "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, 800L Tank", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "GBU-12", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", + "name": "PL-5Ex2, GBU-12x2, 1100L Tank, WMD7", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "GBU-16", + "quantity": 2 + }, + { + "name": "GDJ-II19 - 2 x GBU-12", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*GBU-12x2, GBU-16x2, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, GBU-16x2, WMD7", + "roles": [ + "CAS", + "Strike", + "FAC-A" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, 1100L Tankx2, WMD7", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "LD-10 x 2", + "quantity": 1 + }, + { + "name": "KG-600", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", + "name": "PL-5Ex2, WMD7, 800L Tankx2, SPJ, 2*LD-10", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LS-6-500", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, LS-6x2, 1100L Tankx2, WMD7", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, C-701 IRx2, 1100L Tankx2, WMD7", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "GBU-12", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, GBU-12x2, 1100L Tankx2, WMD7", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LD-10x2, 1100L Tankx2, SPJ", + "name": "PL-5Ex2, 2*LD-10x2, 1100L Tankx2, SPJ", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", + "name": "PL-5Ex2, LD-10x2, 1100L Tankx2, SPJ", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "LS-6-500", + "quantity": 2 + }, + { + "name": "LD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LD-10x2, LS-6x2, SPJ", + "name": "PL-5Ex2, 2*LD-10x2, LS-6x2, SPJ", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "GB-6-HE", + "quantity": 2 + }, + { + "name": "LD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", + "name": "PL-5Ex2, 2*LD-10x2, GB-6-HEx2, SPJ", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", + "name": "PL-5Ex2, C-701 IRx2, 800L Tankx2, WMD7", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "C-701T", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, C-701 CCDx2, 1100L Tankx2, WMD7", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "C-701T", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", + "name": "PL-5Ex2, C-701 CCDx2, 800L Tankx2, WMD7", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GDJ-II19 - 2 x GBU-12", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, 1100L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", + "name": "PL-5Ex2, C-701 IRx2, 1100L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", + "name": "PL-5Ex2, C-701 IRx2, 800L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701T", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 CCDx2, 1100L Tank, WMD7", + "name": "PL-5Ex2, C-701 CCDx2, 1100L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701T", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 CCDx2, 800L Tank, WMD7", + "name": "PL-5Ex2, C-701 CCDx2, 800L Tank, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 1 + }, + { + "name": "C-701T", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "LS-6-500", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", + "name": "PL-5Ex2, C-701 IRx2, LS-6x2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 1 + }, + { + "name": "C-701T", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "GB-6-HE", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IR/CCD, GB-6-HEx2, 800L Tank", + "name": "PL-5Ex2, C-701 IR/CCD, GB-6-HEx2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701IR", + "quantity": 1 + }, + { + "name": "C-701T", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "GB-6-SFW", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 IR/CCD, GB-6-SFWx2, 800L Tank", + "name": "PL-5Ex2, C-701 IR/CCD, GB-6-SFWx2, 800L Tank", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "GB-6-SFW", + "quantity": 2 + }, + { + "name": "BRM-1_90MM", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, BRM1", + "name": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, BRM1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "GB-6-SFW", + "quantity": 2 + }, + { + "name": "GBU-12", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, GBU-12", + "name": "PL-5Ex2, WMD7, GB-6-SFWx2, 800L Tank, GBU-12", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "GDJ-II19 - 2 x Mk-82 SnakeEye", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", + "name": "PL-5Ex2, 2*Mk-82SEx2, Mk-83x3", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "PL-5Ex2, Mk-84x3", + "name": "PL-5Ex2, Mk-84x3", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GDJ-II19 - 2 x LAU68 MK5", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Mk5x2, 800L Tank", + "name": "PL-5Ex2, 2*Mk5x2, 800L Tank", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "UG_90MM", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, Unguided 90mmx2, 800L Tank", + "name": "PL-5Ex2, Unguided 90mmx2, 800L Tank", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "GDJ-II19 - 2 x LAU68 MK5", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Mk5x2, Mk-83x3", + "name": "PL-5Ex2, 2*Mk5x2, Mk-83x3", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "BRM-1_90MM", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", + "name": "PL-5Ex2, BRM1x2, 1100L Tank, WMD7", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2x1100L Tank", + "name": "PL-5Ex2, 2x1100L Tank", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, 2x1100L Tank", + "name": "PL-5Ex2, SD-10x2, 2x1100L Tank", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", + "name": "PL-5Ex2, 2*SD-10x2, 2x1100L Tank", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, 800L Tank", + "name": "PL-5Ex2, 800L Tank", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, 800L Tank", + "name": "PL-5Ex2, SD-10x2, 800L Tank", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10x2, 800L Tank", + "name": "PL-5Ex2, 2*SD-10x2, 800L Tank", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, SPJ", + "name": "PL-5Ex2, SD-10x2, SPJ", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, SPJ", + "name": "PL-5Ex2, SPJ", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10x2, SPJ", + "name": "PL-5Ex2, 2*SD-10x2, SPJ", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2", + "name": "PL-5Ex2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2", + "name": "PL-5Ex2, SD-10x2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10", + "name": "PL-5Ex2, 2*SD-10", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", + "name": "PL-5Ex2, SD-10x2, SPJ, 1100L Tankx2", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10 x 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", + "name": "PL-5Ex2, 2*SD-10x2, 1100L Tankx2, 800L Tank", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "SD-10", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", + "name": "PL-5Ex2, SD-10x2, 1100L Tankx2, 800L Tank", + "roles": [ + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "BRM-1_90MM", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GBU-16", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", + "name": "PL-5Ex2, GBU-16x2, BRM1x2, WMD7", + "roles": [ + "FAC-A", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "PL-5EII", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, WMD7", + "name": "PL-5Ex2, WMD7", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "LD-10 x 2", + "quantity": 1 + }, + { + "name": "SD-10 x 2", + "quantity": 1 + }, + { + "name": "GB-6", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", + "name": "PL-5Ex2, 2*LD-10, GB-6x2, 2*SD-10, SPJ", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "C-701T", + "quantity": 2 + }, + { + "name": "KG-600", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, C-701 CCDx2, SPJ", + "name": "PL-5Ex2, C-701 CCDx2, SPJ", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "LD-10 x 2", + "quantity": 1 + }, + { + "name": "SD-10 x 2", + "quantity": 1 + }, + { + "name": "CM802AKG (DIS)", + "quantity": 2 + }, + { + "name": "DATA-LINK POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", + "name": "PL-5Ex2, 2*LD-10, CM802AKGx2, 2*SD-10, DL", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 1 + }, + { + "name": "GDJ-II19 - 2 x Mk-82", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", + "name": "PL-5Ex2, 2*MK-82x2, MK-83x2, MK-84", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "LS-6-500", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GB-6", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", + "name": "PL-5Ex2, LS-6x2, GB-6x2, 800L Tank", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "GDJ-II19 - 2 x GBU-12", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "LS-6-500", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, LS-6x2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "GDJ-II19 - 2 x GBU-12", + "quantity": 2 + }, + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "GB-6", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", + "name": "PL-5Ex2, 2*GBU-12x2, GB-6x2, WMD7", + "roles": [] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "TYPE-200A Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*Type-200Ax2", + "name": "PL-5Ex2, 2*Type-200Ax2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "TYPE-200A", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, Type-200Ax2", + "name": "PL-5Ex2, Type-200Ax2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "LS-6-250 Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", + "name": "PL-5Ex2, 2*LS6-250x2, 800L Tankx2, WMD7", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "800L Tank", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LS-6-250 Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", + "name": "PL-5Ex2, 2*LS6-250x2, 800L Tank, 1100L Tankx2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "1100L Tank", + "quantity": 2 + }, + { + "name": "LS-6-100 Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", + "name": "PL-5Ex2, 2*LS6-100x2, 1100L Tankx2, WMD7", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PL-5EII", + "quantity": 2 + }, + { + "name": "WMD7 POD", + "quantity": 1 + }, + { + "name": "800L Tank", + "quantity": 2 + }, + { + "name": "LS-6-100 Dual", + "quantity": 2 + } + ], + "enabled": true, + "code": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", + "name": "PL-5Ex2, 2*LS6-100x2, 800L Tankx2, WMD7", + "roles": [ + "CAS" + ] + } + ], + "filename": "jf-17.png", + "enabled": true, + "liveries": { + "paf black panthers 07-101": { + "name": "Pakistan Air Force No.16 Sqn Black Panthers 07-101", + "countries": [ + "PAK" + ] + }, + "paf phoenixes": { + "name": "Pakistan Air Force No.28 Sqn Phoenixes", + "countries": [ + "PAK" + ] + }, + "paf black spiders 07-101 (fictional)": { + "name": "Pakistan Air Force No.26 Sqn Black Spiders 07-101 (Fictional)", + "countries": [ + "PAK" + ] + }, + "paf 07-101 (overhauled)": { + "name": "Pakistan Air Force 07-101 (Overhauled)", + "countries": [ + "PAK" + ] + }, + "paf black panthers (b2v2)": { + "name": "Pakistan Air Force No.16 Sqn Black Panthers (Block2 Camo2)", + "countries": [ + "PAK" + ] + }, + "plaaf 125th ab (fictional)": { + "name": "PLAAF 125th AB (Fictional)", + "countries": [ + "CHN" + ] + }, + "naf 722": { + "name": "Nigerian Air Force 722", + "countries": [ + "NGA" + ] + }, + "paf dark camo": { + "name": "Pakistan Air Force Dark Camo", + "countries": [ + "PAK" + ] + }, + "'splinter' camo for blue side (fictional)": { + "name": "\"Splinter\" Camo for Blue Side (Fictional)", + "countries": "All" + }, + "paf black spiders (web camo)": { + "name": "Pakistan Air Force No.26 Sqn Black Spiders (Web Camo)", + "countries": [ + "PAK" + ] + }, + "plaaf 111th ab (fictional)": { + "name": "PLAAF 111th AB (Fictional)", + "countries": [ + "CHN" + ] + }, + "paf black panthers": { + "name": "Pakistan Air Force No.16 Sqn Black Panthers", + "countries": [ + "PAK" + ] + }, + "paf black spiders (default)": { + "name": "Pakistan Air Force No.26 Sqn Black Spiders", + "countries": [ + "PAK" + ] + }, + "paf ccs fierce fragons": { + "name": "Pakistan Air Force CCS Sqn Fierce Dragons", + "countries": [ + "PAK" + ] + }, + "plaaf ghost gray camo (fictional)": { + "name": "PLAAF \"Ghost Gray\" Camo (Fictional)", + "countries": [ + "CHN" + ] + }, + "'chips' camo for blue side (fictional)": { + "name": "USAF \"Chips\" Camo (Fictional)", + "countries": [ + "USA" + ] + }, + "paf black panthers (reworked)": { + "name": "Pakistan Air Force No.16 Sqn Black Panthers (Reworked)", + "countries": [ + "PAK" + ] + }, + "maf blue sea camo": { + "name": "Myanmar Air Force Blue Sea Camo", + "countries": "All" + }, + "proto 06": { + "name": "FC-1 Prototype 06", + "countries": [ + "CHN" + ] + }, + "paf minhasians": { + "name": "Pakistan Air Force No.2 Sqn Minhasians", + "countries": [ + "PAK" + ] + }, + "paf sharp shooters": { + "name": "Pakistan Air Force No.18 Sqn Sharp Shooters", + "countries": [ + "PAK" + ] + }, + "paf tail choppers": { + "name": "Pakistan Air Force No.14 Sqn Tail Choppers", + "countries": [ + "PAK" + ] + }, + "paf black panthers (b2v1)": { + "name": "Pakistan Air Force No.16 Sqn Black Panthers (Block2 Camo1)", + "countries": [ + "PAK" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 1 crew, fighter and strike. Geoff", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "KC-135": { + "name": "KC-135", + "coalition": "blue", + "label": "KC-135 Stratotanker", + "era": "Early Cold War", + "shortLabel": "135", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Tanker" + ] + } + ], + "filename": "kc-135.png", + "enabled": true, + "liveries": { + "standard usaf": { + "name": "USAF Standard", + "countries": [ + "USA" + ] + }, + "turaf standard": { + "name": "Turkish Air Force", + "countries": [ + "TUR" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 3 crew. Tanker aircraft. Stratotanker", + "abilities": "Tanker, Boom AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false, + "cost": null + }, + "KC135MPRS": { + "name": "KC135MPRS", + "coalition": "blue", + "label": "KC-135 MPRS Stratotanker", + "era": "Early Cold War", + "shortLabel": "135M", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Tanker" + ] + } + ], + "filename": "kc-135.png", + "enabled": true, + "liveries": { + "100th arw": { + "name": "100th ARW", + "countries": [ + "USA" + ] + }, + "22nd arw": { + "name": "22nd ARW", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 3 crew. Tanker aircraft. Stratotanker", + "abilities": "Tanker, Drogue AAR, MPRS", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "L-39ZA": { + "name": "L-39ZA", + "coalition": "red", + "label": "L-39ZA", + "era": "Mid Cold War", + "shortLabel": "L39", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100x2", + "name": "FAB-100x2", + "roles": [ + "Antiship Strike", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel Tank 150 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100x2, PTB-150x2", + "name": "FAB-100x2, PTB-150x2", + "roles": [ + "Antiship Strike", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel Tank 350 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100x2, PTB-350x2", + "name": "FAB-100x2, PTB-350x2", + "roles": [ + "Antiship Strike", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "FAB-100x4", + "name": "FAB-100x4", + "roles": [ + "Antiship Strike", + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", + "quantity": 2 + }, + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "OFAB-100 Jupiter x4, FAB-100x2", + "name": "OFAB-100 Jupiter x4, FAB-100x2", + "roles": [ + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "2 x OFAB-100 Jupiter - 100kg GP Bombs HD", + "quantity": 4 + } + ], + "enabled": true, + "code": "OFAB-100 Jupiter x8", + "name": "OFAB-100 Jupiter x8", + "roles": [ + "CAS", + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "PK-3 - 7.62mm GPMG", + "quantity": 2 + }, + { + "name": "Fuel Tank 150 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "PK-3x2, PTB-150x2", + "name": "PK-3x2, PTB-150x2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "PK-3 - 7.62mm GPMG", + "quantity": 4 + } + ], + "enabled": true, + "code": "PK-3x4", + "name": "PK-3x4", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-3Sx2", + "name": "R-3Sx2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + }, + { + "name": "PK-3 - 7.62mm GPMG", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-3Sx2, PK-3x2", + "name": "R-3Sx2, PK-3x2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60Mx2", + "name": "R-60Mx2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "PK-3 - 7.62mm GPMG", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60Mx2, PK-3x2", + "name": "R-60Mx2, PK-3x2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-5KOx32", + "name": "S-5KOx32", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 2 + }, + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-5KOx32, FAB-100x2", + "name": "S-5KOx32, FAB-100x2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 2 + }, + { + "name": "Fuel Tank 150 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-5KOx32, PTB-150x2", + "name": "S-5KOx32, PTB-150x2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 2 + }, + { + "name": "Fuel Tank 350 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-5KOx32, PTB-350x2", + "name": "S-5KOx32, PTB-350x2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-16UM pod - 16 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-5KOx64", + "name": "S-5KOx64", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "SAB-100MN - 100 kg Illumination Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "SAB-100x4", + "name": "SAB-100x4", + "roles": [ + "FAC-A" + ] + } + ], + "filename": "l-39.png", + "enabled": true, + "liveries": { + "splinter camo woodland": { + "name": "Splinter camo woodland", + "countries": "All" + }, + "algerian af tiger nl-36": { + "name": "Algerian AF Tiger NL-36", + "countries": [ + "DZA" + ] + }, + "czech air force": { + "name": "Czech Air Force", + "countries": [ + "CZE" + ] + }, + "algerian af nl-44": { + "name": "Algerian AF NL-44", + "countries": [ + "DZA" + ] + }, + "splinter camo desert": { + "name": "Splinter camo desert", + "countries": "All" + }, + "slovak air force": { + "name": "2nd SQN AFB Sliac", + "countries": [ + "SVK" + ] + }, + "russian air force": { + "name": "1 Russian Air Force", + "countries": [ + "RUS" + ] + }, + "czechoslovakia air force": { + "name": "Czechoslovakia_Air Force", + "countries": [ + "CZE" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "M-2000C": { + "name": "M-2000C", + "coalition": "blue", + "label": "M-2000C Mirage", + "era": "Late Cold War", + "shortLabel": "2k", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fox", + "name": "Fox", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fox / Magic (QRA)", + "name": "Fox / Magic (QRA)", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Super 530D", + "quantity": 2 + } + ], + "enabled": true, + "code": "Alpha / S530D", + "name": "Alpha / S530D", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "Matra Super 530D", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fox / S530D / Magic", + "name": "Fox / S530D / Magic", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "Matra Super 530D", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + }, + { + "name": "Eclair 16 flares 16 chaffs", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fox / S530D / Magic / Eclair", + "name": "Fox / S530D / Magic / Eclair", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + } + ], + "enabled": true, + "code": "Bravo", + "name": "Bravo", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + } + ], + "enabled": true, + "code": "Bravo / Magic", + "name": "Bravo / Magic", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kilo", + "name": "Kilo", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kilo / Magic", + "name": "Kilo / Magic", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "Bravo / 4xMk-82 / Magic", + "name": "Bravo / 4xMk-82 / Magic", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 1 + } + ], + "enabled": true, + "code": "Bravo / GBU-12 / Magic", + "name": "Bravo / GBU-12 / Magic", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "AUF2 GBU-12 x 2", + "quantity": 1 + } + ], + "enabled": true, + "code": "Bravo / 2xGBU-12 / Magic", + "name": "Bravo / 2xGBU-12 / Magic", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "GBU-16 - 1000lb Laser Guided Bomb", + "quantity": 1 + } + ], + "enabled": true, + "code": "Bravo / GBU-16 / Magic", + "name": "Bravo / GBU-16 / Magic", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "GBU-24 Paveway III - 2000lb Laser Guided Bomb", + "quantity": 1 + } + ], + "enabled": true, + "code": "Bravo / GBU-24 / Magic", + "name": "Bravo / GBU-24 / Magic", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "BAP-100 x 18", + "quantity": 1 + } + ], + "enabled": true, + "code": "Bravo / BAP-100 / Magic", + "name": "Bravo / BAP-100 / Magic", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 4 + } + ], + "enabled": true, + "code": "Bravo / 4xSnakeEye / Magic", + "name": "Bravo / 4xSnakeEye / Magic", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fox / 4xMk-82 / Magic", + "name": "Fox / 4xMk-82 / Magic", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Matra Magic II", + "quantity": 2 + }, + { + "name": "RPL 541 2000 liters Fuel Tank ", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + }, + { + "name": "RPL 522 1300 liters Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kilo / 4xMk-82 / Magic", + "name": "Kilo / 4xMk-82 / Magic", + "roles": [ + "Strike" + ] + } + ], + "filename": "m2000.png", + "enabled": true, + "liveries": { + "ada alsace lf-2": { + "name": "Ada Alsace LF-2", + "countries": [ + "FRA" + ] + }, + "peru052": { + "name": "Fuerza Aerea Peruana 052", + "countries": [ + "FRA", + "PER" + ] + }, + "mission accomplie": { + "name": "2022 MISSION ACCOMPLIE by MALBAK", + "countries": "All" + }, + "cambresis": { + "name": "AdA Cambresis", + "countries": [ + "FRA" + ] + }, + "greek air force": { + "name": "Polemikh Aeroporia (Greek Air Force)", + "countries": [ + "FRA", + "GRC" + ] + }, + "brasilian air force": { + "name": "Forca Aerea Brasileira (Brazilian Air Force)", + "countries": [ + "BRA", + "FRA" + ] + }, + "2003 tigermeet": { + "name": "NATO Tigermeet 2003", + "countries": [ + "FRA" + ] + }, + "peru064": { + "name": "Fuerza Aerea Peruana 064", + "countries": [ + "FRA", + "PER" + ] + }, + "2010 tigermeet": { + "name": "NATO Tigermeet 2010", + "countries": [ + "FRA" + ] + }, + "uae air force": { + "name": "UAE Air Defense Air Force", + "countries": [ + "FRA", + "ARE" + ] + }, + "2004 tigermeet": { + "name": "NATO Tigermeet 2004", + "countries": [ + "FRA" + ] + }, + "ada chasse 2-5": { + "name": "AdA Chasse 2/5", + "countries": [ + "FRA" + ] + }, + "iaf silver 59": { + "name": "Israeli Air Force 101 Sqn 1967 scheme", + "countries": [ + "ABH", + "RUS", + "SPN", + "ISR", + "USA", + "RSO", + "UKR", + "TUR", + "BEL", + "NOR", + "ITA", + "POL", + "NETH", + "GER", + "FRA", + "GRG", + "DEN", + "CZE", + "CAN", + "UK" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 1 crew, fighter and strike.", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MB-339A": { + "name": "MB-339A", + "coalition": "blue", + "label": "MB-339A", + "era": "Mid Cold War", + "shortLabel": "339", + "loadouts": [ + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "", + "quantity": 6 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks [Clean]", + "name": "A - 2*320L TipTanks [Clean]", + "roles": [ + "Transport" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "Fuel Tank 330lt", + "quantity": 2 + }, + { + "name": "", + "quantity": 3 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", + "name": "A - 2*320L TipTanks + 2*330L Tanks [Ferry Medium Range]", + "roles": [ + "Transport" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 HEI Heavy", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", + "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (HEI Rockets)", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", + "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD Bombs + 2*LR-25(API Rockets)", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "Mk-83 - 1000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Mk-81 - 250lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.83 + 2*Mk.81 ", + "name": "A - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*Mk.83 + 2*Mk.81 ", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 6 + } + ], + "enabled": true, + "code": "A - 2*320L TipTanks + 6*Mk.82LD", + "name": "A - 2*320L TipTanks + 6*Mk.82LD", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 330lt", + "quantity": 2 + }, + { + "name": "", + "quantity": 3 + }, + { + "name": "Cylindrical Tip Tank 500lt", + "quantity": 2 + }, + { + "name": "Luggage Container", + "quantity": 1 + } + ], + "enabled": true, + "code": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", + "name": "A - 2*500L TipTanks + 2*330L Tanks + Luggage Container [Ferry Long Range]", + "roles": [ + "No task", + "Transport" + ] + }, + { + "items": [ + { + "name": "Cylindrical Tip Tank 500lt", + "quantity": 2 + }, + { + "name": "Matra Type 155 Rocket Pod", + "quantity": 2 + }, + { + "name": "BLG-66-AC Belouga", + "quantity": 2 + }, + { + "name": "AN/M3 Gunpod Right", + "quantity": 1 + }, + { + "name": "AN/M3 Gunpod Left", + "quantity": 1 + } + ], + "enabled": true, + "code": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", + "name": "A - 2*500L TipTanks + 2*AN/M3 GunPods + 2*Matra 155 + 2* Belouga", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + }, + { + "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Cylindrical Tip Tank 500lt", + "quantity": 2 + } + ], + "enabled": true, + "code": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", + "name": "A - 2*500L TipTanks + 2*DEFA-553 GunPods + 2*Mk.82LD + 2*LR-25 (API Rockets)", + "roles": [] + }, + { + "items": [ + { + "name": "Cylindrical Tip Tank 500lt", + "quantity": 2 + }, + { + "name": "LR-25 - 25 x UnGd Rkts, 50 mm ARF-8/M3 API", + "quantity": 2 + }, + { + "name": "Mk-82 Snakeye - 500lb GP Bomb HD", + "quantity": 4 + } + ], + "enabled": true, + "code": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", + "name": "A - 2*500L TipTanks + 4*Mk.82HD + 2*LR-25 (API Rockets)", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "LAU-10 pod - 4 x 127mm ZUNI, UnGd Rkts Mk71, HE/FRAG", + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + } + ], + "enabled": true, + "code": "AA - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*LAU-10(Zuni Rockets) [ARMADA]", + "name": "AA - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*LAU-10(Zuni Rockets) [ARMADA]", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" Hydra, UnGd Rkts M151, HE", + "quantity": 2 + }, + { + "name": "Fuel Tank 330lt", + "quantity": 2 + }, + { + "name": "AN/M3 Gunpod Right", + "quantity": 1 + }, + { + "name": "AN/M3 Gunpod Left", + "quantity": 1 + } + ], + "enabled": true, + "code": "AM - 2*320L TipTanks + 2*AN/M3 GunPods + 2*330L Tanks + 2*LAU-3 (Hydra rockets)", + "name": "AM - 2*320L TipTanks + 2*AN/M3 GunPods + 2*330L Tanks + 2*LAU-3 (Hydra rockets)", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "14-3-M2 - 6 x BAT-120 ABL - 34kg HE/Frag Chute Retarded Bomb HD", + "quantity": 6 + } + ], + "enabled": true, + "code": "Anti - Light Armoured Vehicle (36*BAT-120 ABL)", + "name": "Anti - Light Armoured Vehicle (36*BAT-120 ABL)", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "Matra Type 155 Rocket Pod", + "quantity": 2 + }, + { + "name": "Fuel Tank 330lt", + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + } + ], + "enabled": true, + "code": "AP - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*330L Tanks + 2*Matra 155 (SNEB rockets)", + "name": "AP - 2*320L TipTanks + 2*DEFA-553 GunPods + 2*330L Tanks + 2*Matra 155 (SNEB rockets)", + "roles": [ + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "AN/M3 Gunpod Right", + "quantity": 1 + }, + { + "name": "Photo-Recon Pod (4*70mm Vinten Cameras)", + "quantity": 1 + }, + { + "name": "Fuel Tank 330lt", + "quantity": 2 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "Recon", + "name": "Recon", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", + "quantity": 4 + }, + { + "name": "Matra Type 155 Rocket Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "Runway Interdiction", + "name": "Runway Interdiction", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Elliptic Tip Tank 320lt", + "quantity": 2 + }, + { + "name": "14-3-M2 - 6 x BAP-100 - 32kg Concrete Piercing Chute Retarded Bomb w/Booster", + "quantity": 6 + } + ], + "enabled": true, + "code": "Runway Interdiction (36*BAP-100)", + "name": "Runway Interdiction (36*BAP-100)", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Cylindrical Tip Tank 500lt", + "quantity": 2 + }, + { + "name": "BRD-4-250 - 4 x Mk 76 - 25lb Practice Bomb LD", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + }, + { + "name": "DEFA553 Gunpod Right", + "quantity": 1 + }, + { + "name": "DEFA553 Gunpod Left", + "quantity": 1 + } + ], + "enabled": true, + "code": "Training", + "name": "Training", + "roles": [] + } + ], + "filename": "mb-339.png", + "enabled": true, + "liveries": { + "mb339an 'nigeria'": { + "name": "Nigerian Air Force | Camo (Low-Vis)", + "countries": [ + "NGA" + ] + }, + "mb339a italian camo - late": { + "name": "Italian Camo - Late", + "countries": [ + "ITA" + ] + }, + "mb339a italian factory": { + "name": "Italian Orange/White", + "countries": [ + "ITA" + ] + }, + "mb339am 'malaysia'": { + "name": "Royal Malaysian Air Force | Camo (Low-Vis)", + "countries": [ + "MYS" + ] + }, + "mb339aa 'armada' - yellow band": { + "name": "ARMADA Argentina | Camo (Yellow Band)", + "countries": [ + "ARG" + ] + }, + "mb339ag 'ghana'": { + "name": "Ghana Air Force | Camo (Low-Vis)", + "countries": [ + "GHA" + ] + }, + "mb339a italian gray": { + "name": "Italian Gray", + "countries": [ + "ITA" + ] + }, + "mb339a italian camo - early": { + "name": "Italian Camo - Early", + "countries": [ + "ITA" + ] + }, + "mb339 'factory'": { + "name": "Aermacchi Factory Scheme | S-001 I-NEUF", + "countries": "All" + }, + "mb339ad 'uae'": { + "name": "UAE Air Force", + "countries": [ + "ARE" + ] + }, + "mb339aa 'armada' - crippa": { + "name": "ARMADA Argentina | Camo (Lt. Crippa's killmark)", + "countries": [ + "ARG" + ] + }, + "mb339ap 'peru'": { + "name": "Peruvian Air Force | Camo (Late)", + "countries": [ + "PER" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 2 crew, light attack trainer. Aviojet", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MQ-9 Reaper": { + "name": "MQ-9 Reaper", + "coalition": "blue", + "label": "MQ-9 Reaper", + "era": "Modern", + "shortLabel": "MQ9", + "loadouts": [ + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + }, + { + "name": "AGM-114K * 2", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-114K*12", + "name": "AGM-114K*12", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "M299 - 4 x AGM-114K Hellfire", + "quantity": 2 + }, + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "AGM-114K*8,GBU-38*2", + "name": "AGM-114K*8,GBU-38*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-12*4", + "name": "GBU-12*4", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "GBU-38(V)1/B - JDAM, 500lb GPS Guided Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "GBU-38*4", + "name": "GBU-38*4", + "roles": [ + "CAS", + "Strike" + ] + } + ], + "filename": "rq-1.png", + "enabled": true, + "liveries": { + "standard": { + "name": "standard", + "countries": [ + "USA" + ] + }, + "standard uk": { + "name": "standard UK", + "countries": [ + "UK" + ] + }, + "standard italy": { + "name": "standard Italy", + "countries": [ + "ITA" + ] + }, + "standard france": { + "name": "standard France", + "countries": [ + "FRA" + ] + }, + "'camo' scheme": { + "name": "'camo' scheme", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "Single turboprop, straight wing, attack aircraft. Reaper", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-15bis": { + "name": "MiG-15bis", + "coalition": "red", + "label": "MiG-15 Fagot", + "era": "Early Cold War", + "shortLabel": "M15", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "FAB-50 - 50kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*FAB-50", + "name": "2*FAB-50", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100M - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*FAB-100M", + "name": "2*FAB-100M", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 300 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*300L", + "name": "2*300L", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 400 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*400L", + "name": "2*400L", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 600 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "2*600L", + "name": "2*600L", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 300 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "Fuel tank 300", + "name": "Fuel tank 300", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 400 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "Fuel tank 400", + "name": "Fuel tank 400", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + } + ], + "filename": "mig-15.png", + "enabled": true, + "liveries": { + "china_air force": { + "name": "People's Liberation Army Air Force", + "countries": [ + "CHN" + ] + }, + "china volunteer air force": { + "name": "People's Volunteer Army Air Force", + "countries": [ + "CHN" + ] + }, + "ussr_red": { + "name": "USSR Red", + "countries": [ + "SUN", + "RUS" + ] + }, + "algerian af 1962": { + "name": "Algerian AF 1962", + "countries": [ + "DZA" + ] + }, + "north_korea_air force_major_ arkady_ boitsow": { + "name": "North Korea - Major Arkady Boitsow", + "countries": [ + "RUS", + "PRK" + ] + }, + "gdr_air force": { + "name": "Air Forces of the National People's Army", + "countries": [ + "GER" + ] + }, + "default livery": { + "name": "default livery", + "countries": [ + "BRA", + "CUB", + "MYS", + "ARE", + "AUS", + "ABH", + "RUS", + "PHL", + "SPN", + "ISR", + "SUN", + "USA", + "BHR", + "MAR", + "BLR", + "HRV", + "DZA", + "OMN", + "RSO", + "SVK", + "HND", + "IRN", + "UKR", + "TUR", + "JPN", + "PRK", + "SRB", + "IDN", + "KAZ", + "BGR", + "BEL", + "INS", + "THA", + "LBY", + "AUSAF", + "VEN", + "PAK", + "JOR", + "RSA", + "FIN", + "MEX", + "KWT", + "NOR", + "IRQ", + "SYR", + "ITA", + "NZG", + "GRC", + "POL", + "NETH", + "GER", + "SUI", + "CHN", + "SAU", + "SWE", + "YEM", + "VNM", + "ROU", + "RSI", + "FRA", + "CHL", + "KOR", + "HUN", + "AUT", + "GRG", + "DEN", + "TUN", + "EGY", + "IND", + "CZE", + "ETH", + "CAN", + "SDN", + "QAT", + "UK", + "YUG" + ] + }, + "haf fictional": { + "name": "Hellenic Airforce - Fictional", + "countries": [ + "GRC" + ] + }, + "ussr_air forces": { + "name": "Air Forces of Soviet Union", + "countries": [ + "SUN", + "RUS" + ] + }, + "north_korea_air force": { + "name": "Korean People's Air Force", + "countries": [ + "PRK" + ] + }, + "polish_air force": { + "name": "Polish Air Force", + "countries": [ + "POL" + ] + }, + "ussr_air forces old": { + "name": "USSR Old", + "countries": [ + "SUN", + "RUS" + ] + }, + "czechoslovakia_air force": { + "name": "Czechoslovak Air Force", + "countries": [ + "CZE" + ] + }, + "ussr_pepelyaev": { + "name": "USSR Pepelyaev", + "countries": [ + "SUN", + "RUS", + "PRK" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 1 crew. Fagot", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-19P": { + "name": "MiG-19P", + "coalition": "red", + "label": "MiG-19 Farmer", + "era": "Early Cold War", + "shortLabel": "M19", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 760 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "PTB-760 x 2", + "name": "PTB-760 x 2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "K-13A", + "quantity": 2 + }, + { + "name": "Fuel Tank 760 liters", + "quantity": 2 + } + ], + "enabled": true, + "code": "K-13A x 2, PTB-760 x 2", + "name": "K-13A x 2, PTB-760 x 2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "K-13A", + "quantity": 2 + } + ], + "enabled": true, + "code": "K-13A x 2", + "name": "K-13A x 2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "K-13A", + "quantity": 2 + }, + { + "name": "Fuel Tank 760 liters", + "quantity": 2 + }, + { + "name": "ORO-57K - S-5M x 8", + "quantity": 2 + } + ], + "enabled": true, + "code": "K-13A x 2, ORO-57K x 2, PTB-760 x 2", + "name": "K-13A x 2, ORO-57K x 2, PTB-760 x 2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 760 liters", + "quantity": 2 + }, + { + "name": "ORO-57K - S-5M x 8", + "quantity": 2 + } + ], + "enabled": true, + "code": "ORO-57K x 2, PTB-760 x 2", + "name": "ORO-57K x 2, PTB-760 x 2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "ORO-57K - S-5M x 8", + "quantity": 4 + } + ], + "enabled": true, + "code": "ORO-57K x 4", + "name": "ORO-57K x 4", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "ORO-57K - S-5M x 8", + "quantity": 2 + } + ], + "enabled": true, + "code": "ORO-57K x 2", + "name": "ORO-57K x 2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100M - 100kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "ORO-57K - S-5M x 8", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100M x 2, ORO-57K x 2", + "name": "FAB-100M x 2, ORO-57K x 2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "ORO-57K - S-5M x 8", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250 x 2, ORO-57K x 2", + "name": "FAB-250 x 2, ORO-57K x 2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-100M - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100M x 2", + "name": "FAB-100M x 2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250 x 2", + "name": "FAB-250 x 2", + "roles": [ + "CAS", + "Strike" + ] + } + ], + "filename": "mig-19.png", + "enabled": true, + "liveries": { + "ussr_2": { + "name": "764th Fighter Aviation Regiment", + "countries": [ + "SUN", + "RUS" + ] + }, + "plaaf camo": { + "name": "PLAAF Snow Camo", + "countries": [ + "CHN" + ] + }, + "cuba": { + "name": " 211 Escuadron de Caza", + "countries": [ + "CUB" + ] + }, + "iap": { + "name": "234 Fighter Regiment (234 IAP)", + "countries": "All" + }, + "ddr - fictional": { + "name": "Germany DDR camouflage (Fictional)", + "countries": "All" + }, + "snow - fictional": { + "name": "Snow Camouflage Fictional", + "countries": "All" + }, + "plaaf": { + "name": "112th Air Regiment", + "countries": [ + "CHN" + ] + }, + "romania - 66th fighter division": { + "name": "91st Fighter Regiment", + "countries": [ + "ROU" + ] + }, + "poland 39 plm": { + "name": "39 PLM Squadron", + "countries": [ + "POL" + ] + }, + "poland 62 plm": { + "name": "62 PLM Squadron", + "countries": [ + "POL" + ] + }, + "default": { + "name": "default", + "countries": "All" + }, + "czechoslovakia": { + "name": "2nd Fighter-Bomber Regiment", + "countries": [ + "CZE" + ] + }, + "bulgaria": { + "name": "1st Squadron, 18th Fighter Regiment", + "countries": [ + "BGR" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 1 crew. Farmer", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-21Bis": { + "name": "MiG-21Bis", + "coalition": "red", + "label": "MiG-21 Fishbed", + "era": "Mid Cold War", + "shortLabel": "M21", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Patrol, long range", + "name": "Patrol, long range", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "R-60 x 2", + "quantity": 2 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Patrol, medium range", + "name": "Patrol, medium range", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 490 L Central (21)", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "R-60 x 2", + "quantity": 2 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Patrol, short range", + "name": "Patrol, short range", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "Hard targets, BOMBS", + "name": "Hard targets, BOMBS", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "UB-32M - 32 S-5M", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "Unknown or mixed targets, BOMBS + ROCKETS", + "name": "Unknown or mixed targets, BOMBS + ROCKETS", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "UB-32M - 32 S-5M", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + } + ], + "enabled": true, + "code": "Soft targets, CLUSTERS + ROCKETS", + "name": "Soft targets, CLUSTERS + ROCKETS", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "BL-755 CBU - 450kg, 147 Frag/Pen bomblets", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + } + ], + "enabled": true, + "code": "Soft targets, CLUSTERS", + "name": "Soft targets, CLUSTERS", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "UPK-23-250 - gun pod", + "quantity": 2 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "Soft targets, scattered", + "name": "Soft targets, scattered", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Kh-66 Grom (21) - AGM, radar guided APU-68", + "quantity": 2 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Few big targets, GROM + BOMBS", + "name": "Few big targets, GROM + BOMBS", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 2 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "Very hard target, PENETRATION", + "name": "Very hard target, PENETRATION", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Aerial attack, hard targets, CLUSTERS", + "name": "Aerial attack, hard targets, CLUSTERS", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "S-24A (21) - 180 kg, cumulative unguided rocket", + "quantity": 4 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Hard targets, ROCKETS, PENETRATION", + "name": "Hard targets, ROCKETS, PENETRATION", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "S-24B (21) - 180 kg, fragmented unguided rocket", + "quantity": 4 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Soft targets, ROCKETS, BLAST-FRAGMENTS", + "name": "Soft targets, ROCKETS, BLAST-FRAGMENTS", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 490 L Central (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Long range, MIX", + "name": "Long range, MIX", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 490 L Central (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Long range, RADAR GUIDED MISSILES", + "name": "Long range, RADAR GUIDED MISSILES", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 490 L Central (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Long range, INFRA RED MISSILES", + "name": "Long range, INFRA RED MISSILES", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "Escort", + "name": "Escort", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "SPS-141-100 (21) - jamming and countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Escort, JAMMER", + "name": "Escort, JAMMER", + "roles": [ + "Escort" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "SAB-100MN - 100 kg Illumination Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "Night, ILLUMINATOR", + "name": "Night, ILLUMINATOR", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "SPS-141-100 (21) - jamming and countermeasures pod", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Long range, JAMMER", + "name": "Long range, JAMMER", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "UPK-23-250 - gun pod", + "quantity": 2 + }, + { + "name": "UB-16UM - 16 S-5M", + "quantity": 2 + } + ], + "enabled": true, + "code": "Soft targets, UPK + ROCKETS", + "name": "Soft targets, UPK + ROCKETS", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + }, + { + "name": "UPK-23-250 - gun pod", + "quantity": 2 + }, + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Soft targets, UPK + CLUSTERS", + "name": "Soft targets, UPK + CLUSTERS", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "SPS-141-100 (21) - jamming and countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + } + ], + "enabled": true, + "code": "Patrol, JAMMER", + "name": "Patrol, JAMMER", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "RN-24 - 470kg, nuclear bomb, free fall", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + } + ], + "enabled": true, + "code": "NUCLEAR A", + "name": "NUCLEAR A", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "RN-28 - 260 kg, nuclear bomb, free fall", + "quantity": 1 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + }, + { + "name": "Fuel Tank 490 L (21)", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 1 + } + ], + "enabled": true, + "code": "NUCLEAR B", + "name": "NUCLEAR B", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel Tank 800 L (21)", + "quantity": 1 + }, + { + "name": "R-3R - AAM, radar guided", + "quantity": 2 + }, + { + "name": "R-3S - AAM, IR guided", + "quantity": 2 + }, + { + "name": "ASO-2 - countermeasures pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Short range", + "name": "Short range", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Smoke - white - 21", + "quantity": 1 + } + ], + "enabled": true, + "code": "AEROBATIC", + "name": "AEROBATIC", + "roles": [] + } + ], + "filename": "mig-21.png", + "enabled": true, + "liveries": { + "afghanistan (1)": { + "name": "Afghanistan (1)", + "countries": "All" + }, + "bulgaria - 1-3 iae (3)": { + "name": "Bulgaria - 1/3 IAE (3)", + "countries": "All" + }, + "germany east - jg-8": { + "name": "East Germany - JG-8", + "countries": "All" + }, + "plaaf - white": { + "name": "PLAAF - White", + "countries": "All" + }, + "croatia - 21st fs": { + "name": "Croatia - 21st Fighter Squadron (Zagreb AB)", + "countries": "All" + }, + "plaaf - sky blue": { + "name": "PLAAF - Sky Blue", + "countries": "All" + }, + "iraq - 17th sqn (2)": { + "name": "Iraq - 17th Sqn (2)", + "countries": "All" + }, + "vvs - amt-11 grey": { + "name": "VVS - AMT-11 Grey", + "countries": "All" + }, + "vvs - 234 gviap": { + "name": "VVS - 234 GvIAP", + "countries": "All" + }, + "bare metal": { + "name": "Bare Metal", + "countries": "All" + }, + "bulgaria - 1-3 iae (2)": { + "name": "Bulgaria - 1/3 IAE (2)", + "countries": "All" + }, + "plaaf - splinter": { + "name": "PLAAF - Splinter", + "countries": "All" + }, + "argentina (2)": { + "name": "Argentina (2)", + "countries": "All" + }, + "vvs - demonstrator": { + "name": "VVS Demonstrator", + "countries": "All" + }, + "vvs - 115 gviap": { + "name": "VVS - 115 GvIAP (Kokaydy AB)", + "countries": "All" + }, + "romania - lancer a": { + "name": "Romania - Lancer A", + "countries": "All" + }, + "sweden - 16th air wing": { + "name": "Sweden - 16th Air Wing", + "countries": "All" + }, + "syria (1)": { + "name": "Syria (1)", + "countries": "All" + }, + "egypt - grey 1982": { + "name": "Egypt - Grey 1982", + "countries": "All" + }, + "finland - hävllv 31": { + "name": "Finland - HavLLv 31", + "countries": "All" + }, + "huaf 47th ab - 6115 (griff sqn)": { + "name": "HunAF Griff Sqn. (47th AB) 6115", + "countries": "All" + }, + "libya - 2017": { + "name": "Lybia - 2017", + "countries": "All" + }, + "huaf 47th ab (griff sqn)": { + "name": "HunAF Griff Sqn. (47th AB)", + "countries": "All" + }, + "cuba - 1990s": { + "name": "Cuba - 1990s", + "countries": "All" + }, + "serbia - 101st lae": { + "name": "Serbia - 101st LAE", + "countries": "All" + }, + "slovakia - 1998": { + "name": "Slovakia - 1998", + "countries": "All" + }, + "iran - 51st sqn": { + "name": "Iran - 51st Sqn (Umidiyeh AB)", + "countries": "All" + }, + "vvs - 116 cbp": { + "name": "VVS - 116 CBP", + "countries": "All" + }, + "georgia (2)": { + "name": "Georgia (2)", + "countries": "All" + }, + "huaf metal": { + "name": "HuAF Metal", + "countries": "All" + }, + "bulgaria - 1-3 iae": { + "name": "Bulgaria - 1/3 IAE", + "countries": "All" + }, + "india - 101st sqn (1)": { + "name": "India - 101st Sqn Falcons", + "countries": "All" + }, + "ukraine (2)": { + "name": "Ukraine 02", + "countries": "All" + }, + "vpaf - 927th fighter regiment metal": { + "name": "VPAF - 927th Fighter Regiment Metal", + "countries": "All" + }, + "iran - standard": { + "name": "Iran - Standard", + "countries": "All" + }, + "romania - lancer c": { + "name": "Romania - Lancer C", + "countries": "All" + }, + "angola - c41": { + "name": "Angola - C41", + "countries": "All" + }, + "poland - 1 dlmw": { + "name": "Poland - 1 DLMW", + "countries": "All" + }, + "yugoslavia - gray": { + "name": "Yugoslavia - Grey", + "countries": "All" + }, + "angola - c314": { + "name": "Angola - C314", + "countries": "All" + }, + "argentina (1)": { + "name": "Argentina (1)", + "countries": "All" + }, + "romania - gray": { + "name": "Romania - Gray", + "countries": "All" + }, + "dprk - 2016 - 42": { + "name": "DPRK - 2016 Nr.42", + "countries": "All" + }, + "libya - early": { + "name": "Lybia - Early", + "countries": "All" + }, + "poland - metal": { + "name": "Poland - Lacquer Metal", + "countries": "All" + }, + "syria (2)": { + "name": "Syria (2)", + "countries": "All" + }, + "india - 15th sqn": { + "name": "India - 15 Sqn War Games", + "countries": "All" + }, + "cuba - um 5010 is": { + "name": "Cuba - UM 5010 IS", + "countries": "All" + }, + "afghanistan (2)": { + "name": "Afghanistan (2)", + "countries": "All" + }, + "iraq - 9th sqn": { + "name": "Iraq - 9th Sqn", + "countries": "All" + }, + "vpaf - 927th lam son - 6122": { + "name": "VPAF - 927th Lam Son", + "countries": "All" + }, + "yugoslavia - camo": { + "name": "Yugoslavia - Camo", + "countries": "All" + }, + "egypt - tan 1982": { + "name": "Egypt - Tan 1982", + "countries": "All" + }, + "croatia - 1st fs 1992": { + "name": "Croatia - 1st FS 1992", + "countries": "All" + }, + "southeria": { + "name": "Southeria", + "countries": "All" + }, + "ukraine (1)": { + "name": "Ukraine 01", + "countries": "All" + }, + "georgia (1)": { + "name": "Georgia (1)", + "countries": "All" + }, + "northeria - 32nd fs": { + "name": "Northeria - 32nd FG", + "countries": "All" + }, + "cuba - metal": { + "name": "Cuba - Metal", + "countries": "All" + }, + "huaf 47th ab - early": { + "name": "HunAF Griff Sqn. (47th AB) - Early ", + "countries": "All" + }, + "jasdf": { + "name": "JASDF", + "countries": "All" + }, + "raf - 111th sqn": { + "name": "RAF - 111th Sqn", + "countries": "All" + }, + "sweden - m90": { + "name": "Sweden - M90", + "countries": "All" + }, + "algeria": { + "name": "Algeria FD-43", + "countries": "All" + }, + "india - 101st sqn (2)": { + "name": "India - 101st Sqn Falcons (2)", + "countries": "All" + }, + "draken international": { + "name": "Draken International", + "countries": "All" + }, + "raf - 11th sqn": { + "name": "RAF - 11th Sqn", + "countries": "All" + }, + "vpaf - 921st sao do - 5040": { + "name": "VPAF - 921st Sao Do", + "countries": "All" + }, + "vvs - metal": { + "name": "VVS Metal", + "countries": "All" + }, + "iraq - 17th sqn (1)": { + "name": "Iraq - 17th Sqn (1)", + "countries": "All" + }, + "vvs - 185th gviap": { + "name": "VVS 185th GvIAP", + "countries": "All" + }, + "poland - 10 elt": { + "name": "Poland - 10 ELT", + "countries": "All" + }, + "dprk - 2014 - 34": { + "name": "DPRK - 2014 Nr.34", + "countries": "All" + }, + "huaf grey": { + "name": "HuAF Grey", + "countries": "All" + }, + "huaf 31st ab (turul sqn)": { + "name": "HunAF 1904 Capeti (51th AB)", + "countries": "All" + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 1 crew. Fishbed", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-23MLD": { + "name": "MiG-23MLD", + "coalition": "red", + "label": "MiG-23 Flogger", + "era": "Mid Cold War", + "shortLabel": "23", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60M*4", + "name": "R-60M*4", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "B-8*2,R-60M*2,Fuel-800", + "name": "B-8*2,R-60M*2,Fuel-800", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "UB-32*2,R-60M*2,Fuel-800", + "name": "UB-32*2,R-60M*2,Fuel-800", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-24R*2,R-60M*4,Fuel-800", + "name": "R-24R*2,R-60M*4,Fuel-800", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-24T (AA-7 Apex IR) - Infra Red", + "quantity": 1 + }, + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + }, + { + "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-24R,R-24T,R-60M*4,Fuel-800", + "name": "R-24R,R-24T,R-60M*4,Fuel-800", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-60M*4,Fuel-800", + "name": "R-60M*4,Fuel-800", + "roles": [ + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*2,R-60M*2,Fuel-800", + "name": "FAB-500*2,R-60M*2,Fuel-800", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-24R*2,R-60M*4", + "name": "R-24R*2,R-60M*4", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*2,R-60M*2,Fuel-800", + "name": "FAB-250*2,R-60M*2,Fuel-800", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-250*2,R-60M*2,Fuel-800", + "name": "RBK-250*2,R-60M*2,Fuel-800", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500*2,R-60M*2,Fuel-800", + "name": "RBK-500*2,R-60M*2,Fuel-800", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-24T (AA-7 Apex IR) - Infra Red", + "quantity": 1 + }, + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-24R (AA-7 Apex SA) - Semi-Act Rdr", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-24R,R-24T,R-60M*4", + "name": "R-24R,R-24T,R-60M*4", + "roles": [ + "CAP" + ] + } + ], + "filename": "mig-23.png", + "enabled": true, + "liveries": { + "af standard-2": { + "name": "af standard-2", + "countries": [ + "SUN", + "RUS" + ] + }, + "af standard-3 (worn-out)": { + "name": "af standard-3 (worn-out)", + "countries": [ + "SUN", + "RUS" + ] + }, + "algerian air force": { + "name": "Algerian Air Force", + "countries": [ + "DZA" + ] + }, + "af standard-1": { + "name": "af standard-1", + "countries": [ + "SUN", + "RUS" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swing wing, 1 crew. Flogger", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-25PD": { + "name": "MiG-25PD", + "coalition": "red", + "label": "MiG-25PD Foxbat", + "era": "Mid Cold War", + "shortLabel": "25P", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-40TD (AA-6 Acrid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-40R*2,R-40T*2", + "name": "R-40R*2,R-40T*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-40R*4", + "name": "R-40R*4", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-40R*2,R-60M*2", + "name": "R-40R*2,R-60M*2", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + } + ], + "filename": "mig-25.png", + "enabled": true, + "liveries": { + "algerian air force": { + "name": "Algeria Air Force standard", + "countries": [ + "DZA" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 1 crew. Foxbat", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-25RBT": { + "name": "MiG-25RBT", + "coalition": "red", + "label": "MiG-25RBT Foxbat", + "era": "Mid Cold War", + "shortLabel": "25R", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-500x2_60x2", + "name": "FAB-500x2_60x2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60M*2", + "name": "R-60M*2", + "roles": [ + "Reconnaissance" + ] + } + ], + "filename": "mig-25.png", + "enabled": true, + "liveries": { + "algerian air force": { + "name": "Algeria Air Force standard", + "countries": [ + "DZA" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 1 crew. Foxbat", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-27K": { + "name": "MiG-27K", + "coalition": "red", + "label": "MiG-27K Flogger-D", + "era": "Mid Cold War", + "shortLabel": "M27", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*6,R-60M*2,Fuel", + "name": "FAB-250*6,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "BetAB-500ShP*2,FAB-250*2,R-60*2", + "name": "BetAB-500ShP*2,FAB-250*2,R-60*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-25MR*2,R-60M*2,Fuel", + "name": "Kh-25MR*2,R-60M*2,Fuel", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*2,R-60M*2,Fuel", + "name": "Kh-29L*2,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "B-8*4", + "name": "B-8*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "BetAB-500*2,FAB-500*2,R-60*2", + "name": "BetAB-500*2,FAB-500*2,R-60*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-25MPU*2,R-60M*2,Fuel", + "name": "Kh-25MPU*2,R-60M*2,Fuel", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29T*2,R-60M*2,Fuel", + "name": "Kh-29T*2,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", + "name": "FAB-500*2,FAB-250*2,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-25ML*2,R-60M*2,Fuel", + "name": "Kh-25ML*2,R-60M*2,Fuel", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "KAB-500LG - 500kg Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-500*2,R-60M*2,Fuel", + "name": "KAB-500*2,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-500AO*2,RBK-250*2,R-60M*2", + "name": "RBK-500AO*2,RBK-250*2,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "UB-32*4", + "name": "UB-32*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*2,R-60*2,Fuel", + "name": "Kh-29L*2,R-60*2,Fuel", + "roles": [ + "Antiship Strike" + ] + } + ], + "filename": "mig-23.png", + "enabled": true, + "liveries": { + "algerian air force": { + "name": "Algerian Air Force", + "countries": [ + "DZA" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swing wing, 1 crew. Flogger", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-29A": { + "name": "MiG-29A", + "coalition": "red", + "label": "MiG-29A Fulcrum", + "era": "Late Cold War", + "shortLabel": "M29", + "loadouts": [ + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "B-8*4,R-73*2,Fuel", + "name": "B-8*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500*4,R-73*2,Fuel", + "name": "BetAB-500*4,R-73*2,Fuel", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*4,R-73*2,Fuel", + "name": "FAB-250*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*4,R-73*2,Fuel", + "name": "FAB-500*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel tank 1150L MiG-29", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel-1150*2,Fuel-1500", + "name": "Fuel-1150*2,Fuel-1500", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60M*4,R-27R*2", + "name": "R-60M*4,R-27R*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-60M*4,R-27R*2,Fuel-1500", + "name": "R-60M*4,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-60M*6", + "name": "R-60M*6", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 6 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-60M*6,Fuel-1500", + "name": "R-60M*6,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*2,R-60M*2,R-27R*2", + "name": "R-73*2,R-60M*2,R-27R*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", + "name": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2", + "name": "R-73*4,R-27R*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2,Fuel-1500", + "name": "R-73*4,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*6", + "name": "R-73*6", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 6 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*6,Fuel-1500", + "name": "R-73*6,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-250*4,R-73*2,Fuel", + "name": "RBK-250*4,R-73*2,Fuel", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500AO*4,R-73*2,Fuel", + "name": "RBK-500AO*4,R-73*2,Fuel", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-24*2,FAB-500*2,R-73*2,Fuel", + "name": "S-24*2,FAB-500*2,R-73*2,Fuel", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-24*4,R-73*2,Fuel", + "name": "S-24*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + } + ], + "filename": "mig-29.png", + "enabled": true, + "liveries": { + "air force ukraine standard": { + "name": "Air Force (Standard)", + "countries": [ + "UKR" + ] + }, + "air force standard": { + "name": "Air Force (Standard)", + "countries": [ + "SUN", + "RUS" + ] + }, + "strizhi": { + "name": "Strizhi 1992", + "countries": [ + "RUS" + ] + }, + "domna 120th ar": { + "name": "Domna - 120th Aviation Regiment", + "countries": [ + "RUS" + ] + }, + "mary-1 agressors": { + "name": "Soviet Air Forces, a/b 1521 (Mary-1)", + "countries": [ + "RUS" + ] + }, + "polish 41st sqn standard1": { + "name": "41st Sqn Standard 1", + "countries": [ + "POL" + ] + }, + "iriaf sand-blue": { + "name": "IRIAF sand-blue", + "countries": [ + "IRN" + ] + }, + "strizhi (w)": { + "name": "Strizhi 1992(W)", + "countries": [ + "RUS" + ] + }, + "polish 41st sqn standard2": { + "name": "41st Sqn Standard 2", + "countries": [ + "POL" + ] + }, + "vasylkiv 40th brta": { + "name": "Vasylkiv - 40th Brigade of Tactical Aviation", + "countries": [ + "UKR" + ] + }, + "kazakhstan air defense forces": { + "name": "KazAADF 600th Airbase 2015", + "countries": [ + "KAZ" + ] + }, + "kazakhstan kazaadf 2008": { + "name": "KazAADF 600th Airbase 2008", + "countries": [ + "KAZ" + ] + }, + "iriaf blue-grey": { + "name": "IRIAF blue-grey", + "countries": [ + "IRN" + ] + }, + "syaaf": { + "name": "Syrian Arab Air Force", + "countries": [ + "SYR" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 1 crew. Flanker", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-29S": { + "name": "MiG-29S", + "coalition": "red", + "label": "MiG-29S Fulcrum", + "era": "Late Cold War", + "shortLabel": "M29", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*2,R-60M*2,R-27R*2", + "name": "R-73*2,R-60M*2,R-27R*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2,Fuel-1500", + "name": "R-73*4,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 6 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*6,Fuel-1500", + "name": "R-73*6,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 6 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-60M*6,Fuel-1500", + "name": "R-60M*6,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-24*4,R-73*2,Fuel", + "name": "S-24*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*4,R-73*2,Fuel", + "name": "FAB-500*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500*4,R-73*2,Fuel", + "name": "BetAB-500*4,R-73*2,Fuel", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500AO*4,R-73*2,Fuel", + "name": "RBK-500AO*4,R-73*2,Fuel", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", + "name": "R-73*2,R-60M*2,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1150L MiG-29", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-77*2,R-73*2,Fuel-1500,Fuel-1150*2", + "name": "R-77*2,R-73*2,Fuel-1500,Fuel-1150*2", + "roles": [ + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "B-8*4,R-73*2,Fuel", + "name": "B-8*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-250*4,R-73*2,Fuel", + "name": "RBK-250*4,R-73*2,Fuel", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*6", + "name": "R-73*6", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Fuel tank 1150L MiG-29", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel-1150*2,Fuel-1500", + "name": "Fuel-1150*2,Fuel-1500", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-60M*6", + "name": "R-60M*6", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-60M*4,R-27R*2", + "name": "R-60M*4,R-27R*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2", + "name": "R-73*4,R-27R*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-77*4,R-73*2", + "name": "R-77*4,R-73*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*4,R-73*2,Fuel", + "name": "FAB-250*4,R-73*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-60M*4,R-27R*2,Fuel-1500", + "name": "R-60M*4,R-27R*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 4 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-77*4,R-73*2,Fuel-1500", + "name": "R-77*4,R-73*2,Fuel-1500", + "roles": [ + "CAP", + "CAP", + "Escort" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "Fuel tank 1400L", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-24*2,FAB-500*2,R-73*2,Fuel", + "name": "S-24*2,FAB-500*2,R-73*2,Fuel", + "roles": [ + "Antiship Strike" + ] + } + ], + "filename": "mig-29.png", + "enabled": true, + "liveries": { + "algerian af fc-16": { + "name": "Algerian AF FC-16", + "countries": [ + "DZA" + ] + }, + "air force ukraine standard": { + "name": "Air Force (Standard)", + "countries": [ + "UKR" + ] + }, + "air force standard": { + "name": "Air Force (Standard)", + "countries": [ + "RUS" + ] + }, + "kazaadf new faded (fictional)": { + "name": "KazAADF new faded (fictional)", + "countries": [ + "KAZ" + ] + }, + "strizhi": { + "name": "Strizhi 2003", + "countries": [ + "RUS" + ] + }, + "115 gviap_termez": { + "name": "Termez AFB, 115th Guards Aviation Regiment", + "countries": [ + "RUS" + ] + }, + "1521th air base_mary-1": { + "name": "Mary-1 AFB, 1521st Air Force Base", + "countries": [ + "RUS" + ] + }, + "kazaadf old (fictional)": { + "name": "KazAADF old (fictional)", + "countries": [ + "KAZ" + ] + }, + "swifts": { + "name": "Swifts (Aerobatic team)", + "countries": [ + "RUS" + ] + }, + "773 iap_damgarten": { + "name": "Damgarten AFB, 773rd Aviation Regiment", + "countries": [ + "RUS" + ] + }, + "426th air group_erebuni": { + "name": "Erebuni AFB, 426th Air Group", + "countries": [ + "RUS" + ] + }, + "31 gviap_zernograd": { + "name": "Zernograd AFB, 31st Guards Aviation Regiment", + "countries": [ + "RUS" + ] + }, + "28 gviap_andreapol": { + "name": "Andreapol AFB, 28th Guards Aviation Regiment", + "countries": [ + "RUS" + ] + }, + "belarusian air force": { + "name": "Belarusian Air Force 61 FAB Baranavichy (2017)", + "countries": [ + "BLR" + ] + }, + "kazaadf new (fictional)": { + "name": "KazAADF new (fictional)", + "countries": [ + "KAZ" + ] + }, + "falcons of russia": { + "name": "Lipetsk, aerobatic group Falcons of Russia", + "countries": [ + "RUS" + ] + }, + "kazaadf new (fictional digital)": { + "name": "KazAADF new digital (fictional digital)", + "countries": [ + "KAZ" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 1 crew. Flanker", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MiG-31": { + "name": "MiG-31", + "coalition": "red", + "label": "MiG-31 Foxhound", + "era": "Late Cold War", + "shortLabel": "M31", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-40TD (AA-6 Acrid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-40T*2,R-33*4", + "name": "R-40T*2,R-33*4", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", + "quantity": 1 + }, + { + "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", + "quantity": 4 + }, + { + "name": "R-40TD (AA-6 Acrid) - Infra Red", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-40T,R-33*4,R-40R", + "name": "R-40T,R-33*4,R-40R", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-40RD (AA-6 Acrid) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-40R*2,R-33*4", + "name": "R-40R*2,R-33*4", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "APU-60-2M with 2 x R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-33 (AA-9 Amos) - Semi-Act Rdr", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-60M*4,R-33*4", + "name": "R-60M*4,R-33*4", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + } + ], + "filename": "mig-23.png", + "enabled": true, + "liveries": { + "174 gviap_boris safonov": { + "name": "174 GvIAP Boris Safonov", + "countries": [ + "RUS" + ] + }, + "903_white": { + "name": "Demo 903 White", + "countries": [ + "RUS" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 2 crew. Foxhound", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Mirage-F1EE": { + "name": "Mirage-F1EE", + "coalition": "blue", + "label": "Mirage-F1EE", + "era": "Mid Cold War", + "shortLabel": "MF1", + "loadouts": [ + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 2 + }, + { + "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Chute Retarded Bomb HD", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", + "name": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 HD", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 2 + }, + { + "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 LD", + "name": "2*AIM-9J, 2*Fuel Tank, 4*SAMP 400 LD", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", + "quantity": 4 + }, + { + "name": "CLB 4 - 4 x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9JULI, 8*BLU107 Durandal", + "name": "2*AIM-9JULI, 8*BLU107 Durandal", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "SAMP-250 - 250 kg GP Chute Retarded Bomb HD", + "quantity": 4 + }, + { + "name": "CLB 4 - 4 x SAMP-250 - 250 kg GP Chute Retarded Bomb HD", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9JULI, 8*SAMP 250 HD", + "name": "2*AIM-9JULI, 8*SAMP 250 HD", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "SAMP-400 - 400 kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "CLB 4 - 4 x SAMP-400 - 400 kg GP Bomb LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM-9JULI, 8*SAMP 400 LD", + "name": "2*AIM-9JULI, 8*SAMP 400 LD", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 251 F1B HE", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", + "name": "2*AIM9-J, 2*MATRA F4 SNEB251 (HE), 2*R530IR, 1*Fuel Tank", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "R530F EM", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 1*R530EM", + "name": "2*AIM9-JULI, 1*R530EM", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", + "name": "2*AIM9-JULI, 1*R530IR, 2*Fuel Tank", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "R530F EM", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", + "name": "2*AIM9-JULI, 2*R530EM, 1*Fuel Tank", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", + "name": "2*AIM9-JULI, 2*R530IR, 1*Fuel Tank", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "S530F", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*AIM9-JULI, 2*S530F, 1*Fuel Tank", + "name": "2*AIM9-JULI, 2*S530F, 1*Fuel Tank", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 1*R530IR", + "name": "2*R550 Magic I, 1*R530IR", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", + "name": "2*R550 Magic I, 1*R530IR, 2*Fuel Tank", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "R530F IR", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", + "name": "2*R550 Magic I, 2*R530IR, 1*Fuel Tank", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "S530F", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 2*S530F, 1*Fuel Tank", + "name": "2*R550 Magic I, 2*S530F, 1*Fuel Tank", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "S530F", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + }, + { + "name": "BARAX - ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 2*S530F, 1*Fuel Tank, 1*BARAX ECM Pod", + "name": "2*R550 Magic I, 2*S530F, 1*Fuel Tank, 1*BARAX ECM Pod", + "roles": [ + "CAP", + "CAP", + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "SAMP-250 - 250 kg GP Chute Retarded Bomb HD", + "quantity": 2 + }, + { + "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", + "quantity": 2 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", + "name": "2*R550 Magic I, 2*SAMP 250 HD, 2 MATRA F1 SNEB256 (AP), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", + "quantity": 4 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", + "name": "2*R550 Magic I, 4*MATRA F1 SNEB253 (Shaped Charge), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F1 - 36 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", + "quantity": 4 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", + "name": "2*R550 Magic I, 4*MATRA F1 SNEB256 (AP), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 253 F1B HEAT", + "quantity": 4 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", + "name": "2*R550 Magic I, 4*MATRA F4 SNEB253 (Shaped Charge), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R550 Magic 1 IR AAM", + "quantity": 2 + }, + { + "name": "MATRA F4 - 18 x UnGd Rkts, 68 mm SNEB Type 256 F1B HE/Frag", + "quantity": 4 + }, + { + "name": "RP35 Pylon Fuel Tank (1137 l usable)", + "quantity": 1 + } + ], + "enabled": true, + "code": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", + "name": "2*R550 Magic I, 4*MATRA F4 SNEB256 (AP), 1*Fuel Tank", + "roles": [ + "CAS" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + } + ], + "filename": "f-1.png", + "enabled": true, + "liveries": { + "ec 330 lorraine": { + "name": "EC 330 Lorraine", + "countries": [ + "FRA" + ] + }, + "ec 5 330 cote d'argent (fictional ct)": { + "name": "EC 5/330 Cote d'Argent (FICTIONAL CT)", + "countries": [ + "FRA" + ] + }, + "er 2 33 savoie 100 ans de reco (fictional cr)": { + "name": "ER 233 Savoie 100 ans de reco (FICTIONAL CR)", + "countries": [ + "FRA" + ] + }, + "iriaf 3-6210 _ 2017 blue (eq variant)": { + "name": "IRIAF 3-6210 _ 2017 Blue (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "iriaf 3-6209 _ 2010s blue_gray (eq variant)": { + "name": "IRIAF 3-6209 _ 2010s Blue_Gray (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "er 233 savoie ba 118 mont de marsan (fictional cr)": { + "name": "ER 2/33 Savoie BA 118 Mont de Marsan (FICTIONAL CR)", + "countries": [ + "FRA" + ] + }, + "ala 14 blue skin (ee) albacete": { + "name": "ALA 14 Blue Skin (EE) Albacete", + "countries": [ + "SPN" + ] + }, + "usa company skin (m-ee)": { + "name": "USA Company Skin EE", + "countries": [ + "USA", + "AUSAF" + ] + }, + "ala 14 nato skin 1 (ee)": { + "name": "ALA 14 NATO Skin 1 (EE)", + "countries": [ + "SPN" + ] + }, + "iriaf 3-6210 _ 2013 gray (eq variant)": { + "name": "IRIAF 3-6210 _ 2013 Gray (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "usa company skin 2 (m-ee)": { + "name": "USA Company Skin 2 EE", + "countries": [ + "USA", + "AUSAF" + ] + }, + "iriaf 3-6214 _ 2021 blue (eq variant)": { + "name": "IRIAF 3-6214 _ 2021 Blue (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "aerges nato grey": { + "name": "AERGES NATO GREY", + "countries": [ + "CUB", + "AUS", + "PRT", + "SUN", + "USA", + "BLR", + "HRV", + "LBN", + "SVK", + "TUR", + "ARG", + "BEL", + "FIN", + "SAU", + "RSI", + "CHL", + "AUT", + "EGY", + "ECU", + "CAN", + "QAT", + "YUG", + "ISR", + "PER", + "BHR", + "NGA", + "IDN", + "KAZ", + "INS", + "AUSAF", + "PAK", + "SVN", + "ROU", + "DEN", + "TUN", + "IND", + "CZE", + "MYS", + "GHA", + "OMN", + "RSO", + "IRN", + "UKR", + "JPN", + "THA", + "JOR", + "RSA", + "MEX", + "NOR", + "ITA", + "NETH", + "SUI", + "VNM", + "KOR", + "GRG", + "SDN", + "UK", + "BRA", + "ARE", + "ABH", + "BOL", + "RUS", + "PHL", + "SPN", + "MAR", + "DZA", + "GDR", + "HND", + "PRK", + "SRB", + "BGR", + "LBY", + "VEN", + "IRQ", + "SYR", + "NZG", + "GRC", + "POL", + "SWE", + "GER", + "CHN", + "YEM", + "FRA", + "HUN", + "ETH", + "KWT" + ] + }, + "ec 3 33 lorraine ba 112 reims - champagne ardennes": { + "name": "EC 333 Lorraine BA 112 Reims - Champagne Ardennes", + "countries": [ + "FRA" + ] + }, + "ec 1 12 cambresis": { + "name": "EC 112 BA 103 Cambrai-Épinoy", + "countries": [ + "FRA" + ] + }, + "ala 46 blue skin (ee) gando": { + "name": "ALA 46 Blue Skin (EE) Gando", + "countries": [ + "SPN" + ] + }, + "aerges blue": { + "name": "AERGES BLUE", + "countries": [ + "CUB", + "AUS", + "PRT", + "SUN", + "USA", + "BLR", + "HRV", + "LBN", + "SVK", + "TUR", + "ARG", + "BEL", + "FIN", + "SAU", + "RSI", + "CHL", + "AUT", + "EGY", + "ECU", + "CAN", + "QAT", + "YUG", + "ISR", + "PER", + "BHR", + "NGA", + "IDN", + "KAZ", + "INS", + "AUSAF", + "PAK", + "SVN", + "ROU", + "DEN", + "TUN", + "IND", + "CZE", + "MYS", + "GHA", + "OMN", + "RSO", + "IRN", + "UKR", + "JPN", + "THA", + "JOR", + "RSA", + "MEX", + "NOR", + "ITA", + "NETH", + "SUI", + "VNM", + "KOR", + "GRG", + "SDN", + "UK", + "BRA", + "ARE", + "ABH", + "BOL", + "RUS", + "PHL", + "SPN", + "MAR", + "DZA", + "GDR", + "HND", + "PRK", + "SRB", + "BGR", + "LBY", + "VEN", + "IRQ", + "SYR", + "NZG", + "GRC", + "POL", + "SWE", + "GER", + "CHN", + "YEM", + "FRA", + "HUN", + "ETH", + "KWT" + ] + }, + "ec 212 picardie": { + "name": "EC 212 Picardie", + "countries": [ + "FRA" + ] + }, + "iriaf 3-6212 _ col. naghdibake (eq variant)": { + "name": "IRIAF 3-6212 _ Col. Naghdibake (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "iriaf 3-6211 _ 2010s blue_gray (eq variant)": { + "name": "IRIAF 3-6211 _ 2010s Blue_Gray (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "ec 1 5 vendee ba orange-cariat": { + "name": "EC 1/5 Vendee BA 115 Orange-Cariat", + "countries": [ + "FRA" + ] + }, + "er 233 savoie ba 118 mont de marsan dessert camu (fictional cr)": { + "name": "ER 233 Savoie BA 118 Mont de Marsan Dessert Camu (FICTIONAL CR)", + "countries": [ + "FRA" + ] + }, + "iriaf 3-6215 _ 2021 blue (eq variant)": { + "name": "IRIAF 3-6215 _ 2021 Blue (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "iriaf 3-6210 _ 2021 blue (eq variant)": { + "name": "IRIAF 3-6210 _ 2021 Blue (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "ala 46 sq 462 blue skin (ee) gando": { + "name": "ALA 46 SQ 462 Blue Skin (EE) Gando", + "countries": [ + "SPN" + ] + }, + "ec 2 30 normandie niemen (fictional ct)": { + "name": "EC 2/30 Normandie Niemen (FICTIONAL CT)", + "countries": [ + "FRA" + ] + }, + "iriaf 3-6215 _ 1990-2010s desert (eq variant)": { + "name": "IRIAF 3-6215 _ 1990-2010s Desert (EQ Variant)", + "countries": [ + "IRN", + "INS" + ] + }, + "aerges camo": { + "name": "AERGES CAMO", + "countries": [ + "CUB", + "AUS", + "PRT", + "SUN", + "USA", + "BLR", + "HRV", + "LBN", + "SVK", + "TUR", + "ARG", + "BEL", + "FIN", + "SAU", + "RSI", + "CHL", + "AUT", + "EGY", + "ECU", + "CAN", + "QAT", + "YUG", + "ISR", + "PER", + "BHR", + "NGA", + "IDN", + "KAZ", + "INS", + "AUSAF", + "PAK", + "SVN", + "ROU", + "DEN", + "TUN", + "IND", + "CZE", + "MYS", + "GHA", + "OMN", + "RSO", + "IRN", + "UKR", + "JPN", + "THA", + "JOR", + "RSA", + "MEX", + "NOR", + "ITA", + "NETH", + "SUI", + "VNM", + "KOR", + "GRG", + "SDN", + "UK", + "BRA", + "ARE", + "ABH", + "BOL", + "RUS", + "PHL", + "SPN", + "MAR", + "DZA", + "GDR", + "HND", + "PRK", + "SRB", + "BGR", + "LBY", + "VEN", + "IRQ", + "SYR", + "NZG", + "GRC", + "POL", + "SWE", + "GER", + "CHN", + "YEM", + "FRA", + "HUN", + "ETH", + "KWT" + ] + }, + "usa company grey (m-ee)": { + "name": "USA Company Grey EE", + "countries": [ + "USA", + "AUSAF" + ] + } + }, + "type": "Aircraft", + "description": "Single Jet engine, swept wing, 1 crew.", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "MosquitoFBMkVI": { + "name": "MosquitoFBMkVI", + "coalition": "blue", + "label": "Mosquito FB MkVI", + "era": "WW2", + "shortLabel": "Mos", + "loadouts": [ + { + "items": [ + { + "name": "100 gal. Drop Tank", + "quantity": 2 + }, + { + "name": "500 lb MC Short tail", + "quantity": 2 + } + ], + "enabled": true, + "code": "100 gal Drop tank*2, 500 lb MC Short tail*2", + "name": "100 gal Drop tank*2, 500 lb MC Short tail*2", + "roles": [ + "CAP", + "Strike" + ] + }, + { + "items": [ + { + "name": "2 x RP-3 60lb F No1 Mk.I", + "quantity": 2 + }, + { + "name": "100 gal. Drop Tank", + "quantity": 2 + }, + { + "name": "250 lb MC Mk.II", + "quantity": 2 + } + ], + "enabled": true, + "code": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", + "name": "100 gal. Drop tank*2, 250 lb MC Mk.II, RP-3 60lb F No1 Mk.I*4", + "roles": [ + "CAP", + "Antiship Strike", + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "500 lb S.A.P.", + "quantity": 2 + }, + { + "name": "250 lb S.A.P.", + "quantity": 2 + } + ], + "enabled": true, + "code": "250 lb S.A.P*2; 500 lb S.A.P.*2", + "name": "250 lb S.A.P*2; 500 lb S.A.P.*2", + "roles": [ + "CAP", + "Strike" + ] + }, + { + "items": [ + { + "name": "500 lb GP Mk.V", + "quantity": 2 + }, + { + "name": "500 lb MC Short tail", + "quantity": 2 + } + ], + "enabled": true, + "code": "500 lb GP Mk.V*2, 500 lb GP Short tail*2", + "name": "500 lb GP Mk.V*2, 500 lb GP Short tail*2", + "roles": [ + "CAP", + "Strike", + "CAS", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "500 lb GP Short tail", + "quantity": 4 + } + ], + "enabled": true, + "code": "500 lb GP Short tail*4", + "name": "500 lb GP Short tail*4", + "roles": [ + "CAP", + "Strike", + "CAS", + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "250 lb S.A.P.", + "quantity": 2 + }, + { + "name": "4 x RP-3 60lb SAP No2 Mk.I", + "quantity": 2 + } + ], + "enabled": true, + "code": "RP-3 60lb SAP No2 Mk.I*8, 250 lb A.A.P.*2", + "name": "RP-3 60lb SAP No2 Mk.I*8, 250 lb A.A.P.*2", + "roles": [ + "CAP", + "Antiship Strike", + "CAS", + "Strike" + ] + } + ], + "filename": "mosquito.png", + "enabled": true, + "liveries": { + "25th bombardment group p": { + "name": "USAAF 25th Bombardment Group \"P\" (Invasion Stripes)", + "countries": [ + "USA" + ] + }, + "l-3 pz474 1945": { + "name": "L-3 PZ474 1945", + "countries": [] + }, + "raf": { + "name": "RAF 1944", + "countries": "All" + }, + "605 sqn up-j wag's war wagon": { + "name": "605 Sqn UP-J \"Wag's War Wagon\"", + "countries": "All" + }, + "605 sqn up-o": { + "name": "605 Sqn UP-O", + "countries": "All" + }, + "605 sqn": { + "name": "605 Sqn", + "countries": "All" + }, + "iaf - 1956 - 110th squadron": { + "name": "IAF - 1956 - 110th Squadron", + "countries": "All" + }, + "ussr air force": { + "name": "USSR Air Force", + "countries": [] + }, + "no. 235 squadron raf 1944": { + "name": "No. 235 Squadron RAF 1944", + "countries": [] + }, + "no. 613 squadron raf june 1944": { + "name": "No. 613 Squadron RAF, June 1944", + "countries": [ + "UK" + ] + }, + "armée de l'air blue": { + "name": "Armée de L'air Blue Camo", + "countries": [ + "FRA" + ] + }, + "raf, ml897d, no.1409 met flight, wyton, late 1943": { + "name": "RAF, ML897/D, No.1409 Met Flight, Wyton, late 1943", + "countries": [ + "UK" + ] + }, + "no. 27 squadron raf popeye camo letters on": { + "name": "No. 27 Squadron RAF Popeye Camo Letters on", + "countries": [] + }, + "25th bombardment group f": { + "name": "USAAF 25th Bombardment Group \"F\"", + "countries": [ + "USA" + ] + }, + "305sqn july": { + "name": "305Sqn July 1944", + "countries": [] + }, + "305sqn june": { + "name": "305Sqn June 1944", + "countries": [] + }, + "25th bombardment group z": { + "name": "USAAF 25th Bombardment Group \"Z\" (Invasion Stripes)", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "2 propeller, straight wing, 2 crew. Mosquito.", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "P-47D-40": { + "name": "P-47D-40", + "coalition": "blue", + "label": "P-47D Thunderbolt", + "era": "WW2", + "shortLabel": "P47", + "loadouts": [ + { + "items": [ + { + "name": "AN-M57 - 250lb GP Bomb LD", + "quantity": 3 + } + ], + "enabled": true, + "code": "AN-M57*3", + "name": "AN-M57*3", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "AN-M64 - 500lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "110 US gal. Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "AN-M64*2, Fuel110", + "name": "AN-M64*2, Fuel110", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AN-M65 - 1000lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "AN-M65*2", + "name": "AN-M65*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "150 US gal. Fuel Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "Fuel150*2", + "name": "Fuel150*2", + "roles": [ + "Escort", + "CAP" + ] + }, + { + "items": [ + { + "name": "5 x HVAR, UnGd Rkt", + "quantity": 2 + }, + { + "name": "110 US gal. Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "HVAR*10, Fuel110", + "name": "HVAR*10, Fuel110", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "3 x 4.5 inch M8 UnGd Rocket", + "quantity": 2 + }, + { + "name": "AN-M57 - 250lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "110 US gal. Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "M8*6, AN-M57*2, Fuel110", + "name": "M8*6, AN-M57*2, Fuel110", + "roles": [ + "Strike", + "CAS" + ] + } + ], + "filename": "p-47.png", + "enabled": true, + "liveries": { + "79thfg 86thfs the trojan warhorse": { + "name": "79thFG 86thFS The Trojan Warhorse", + "countries": [ + "USA" + ] + }, + "61st_fs_d_day": { + "name": "61st FS, D-day", + "countries": [ + "USA" + ] + }, + "lt_col_gabreski_d_day": { + "name": "Lt.Col. Gabby Gabreski, 61st FS, D-day", + "countries": [ + "USA" + ] + }, + "lt_col_benjamin_mayo": { + "name": "Lt.Col. Benjamin Mayo", + "countries": [ + "USA" + ] + }, + "eagle dynamics commemorative": { + "name": "Eagle Dynamics Commemorative", + "countries": [ + "USA" + ] + }, + "tony 5th emergency rescue squadron": { + "name": "TONY 5th Emergency Rescue Squadron", + "countries": [ + "USA" + ] + }, + "usaf standard": { + "name": "USAF standard", + "countries": [ + "USA" + ] + }, + "maj_howard_park_1945": { + "name": "Maj. Howard Park, 513th FS, France 1945", + "countries": [ + "USA" + ] + }, + "61st_fs_8th_af_hvz": { + "name": "61st FS 8th Air Force HV-Z (Capt. Witold Lanowski)", + "countries": [ + "USA", + "POL" + ] + }, + "53rd_fs_9th_air_force": { + "name": "53rd Fighter Squadron", + "countries": [ + "USA" + ] + }, + "1st brazilian ftr sq-jambock a1-menezes": { + "name": "1st Brazilian Ftr Sq-Jambock A1-Menezes", + "countries": [] + }, + "61st_fs_1944": { + "name": "61st FS, July 1944", + "countries": [ + "USA" + ] + }, + "lt_col_gabreski_1944": { + "name": "Lt.Col. Gabby Gabreski, 61st FS, July 1944", + "countries": [ + "USA" + ] + }, + "lend-lease": { + "name": "Lend-Lease", + "countries": [ + "SUN", + "RUS" + ] + }, + "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d28": { + "name": "509th FS 405th FG \"Chief Ski-U-Mah\" for D-30 (Early) ", + "countries": "All" + }, + "ussr-blue-scheme": { + "name": "USSR - blue", + "countries": [ + "SUN", + "RUS" + ] + }, + "raf thunderbolt": { + "name": "RAF Thunderbolt", + "countries": [] + }, + "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d40": { + "name": "509th FS 405th FG \"Chief Ski-U-Mah\"", + "countries": "All" + }, + "warchief": { + "name": "WarChief", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "Single propellor, straight wing, 1 crew. Thunderbolt", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "P-51D-30-NA": { + "name": "P-51D-30-NA", + "coalition": "blue", + "label": "P-51D Mustang", + "era": "WW2", + "shortLabel": "P51", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "75 US gal. Fuel Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "Fuel75*2", + "name": "Fuel75*2", + "roles": [ + "CAP", + "CAP", + "FAC-A" + ] + }, + { + "items": [ + { + "name": "HVAR, UnGd Rkt", + "quantity": 10 + } + ], + "enabled": true, + "code": "HVAR*10", + "name": "HVAR*10", + "roles": [ + "CAS", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "HVAR, UnGd Rkt", + "quantity": 6 + } + ], + "enabled": true, + "code": "HVAR*6", + "name": "HVAR*6", + "roles": [ + "CAS", + "Strike", + "Antiship Strike", + "FAC-A" + ] + }, + { + "items": [ + { + "name": "HVAR, UnGd Rkt", + "quantity": 6 + }, + { + "name": "75 US gal. Fuel Tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "HVAR*6,Fuel75*2", + "name": "HVAR*6,Fuel75*2", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "HVAR, UnGd Rkt", + "quantity": 6 + }, + { + "name": "AN-M64 - 500lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "HVAR*6,M64*2", + "name": "HVAR*6,M64*2", + "roles": [ + "CAS", + "Strike", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AN-M64 - 500lb GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "M64*2", + "name": "M64*2", + "roles": [ + "Strike", + "Antiship Strike", + "CAS", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "HVAR Smoke Generator", + "quantity": 2 + } + ], + "enabled": true, + "code": "Smokes", + "name": "Smokes", + "roles": [] + } + ], + "filename": "p-51.png", + "enabled": true, + "liveries": { + "79thfg 86thfs the trojan warhorse": { + "name": "79thFG 86thFS The Trojan Warhorse", + "countries": [ + "USA" + ] + }, + "61st_fs_d_day": { + "name": "61st FS, D-day", + "countries": [ + "USA" + ] + }, + "lt_col_gabreski_d_day": { + "name": "Lt.Col. Gabby Gabreski, 61st FS, D-day", + "countries": [ + "USA" + ] + }, + "lt_col_benjamin_mayo": { + "name": "Lt.Col. Benjamin Mayo", + "countries": [ + "USA" + ] + }, + "eagle dynamics commemorative": { + "name": "Eagle Dynamics Commemorative", + "countries": [ + "USA" + ] + }, + "tony 5th emergency rescue squadron": { + "name": "TONY 5th Emergency Rescue Squadron", + "countries": [ + "USA" + ] + }, + "usaf standard": { + "name": "USAF standard", + "countries": [ + "USA" + ] + }, + "maj_howard_park_1945": { + "name": "Maj. Howard Park, 513th FS, France 1945", + "countries": [ + "USA" + ] + }, + "61st_fs_8th_af_hvz": { + "name": "61st FS 8th Air Force HV-Z (Capt. Witold Lanowski)", + "countries": [ + "USA", + "POL" + ] + }, + "53rd_fs_9th_air_force": { + "name": "53rd Fighter Squadron", + "countries": [ + "USA" + ] + }, + "1st brazilian ftr sq-jambock a1-menezes": { + "name": "1st Brazilian Ftr Sq-Jambock A1-Menezes", + "countries": [] + }, + "61st_fs_1944": { + "name": "61st FS, July 1944", + "countries": [ + "USA" + ] + }, + "lt_col_gabreski_1944": { + "name": "Lt.Col. Gabby Gabreski, 61st FS, July 1944", + "countries": [ + "USA" + ] + }, + "lend-lease": { + "name": "Lend-Lease", + "countries": [ + "SUN", + "RUS" + ] + }, + "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d28": { + "name": "509th FS 405th FG \"Chief Ski-U-Mah\" for D-30 (Early) ", + "countries": "All" + }, + "ussr-blue-scheme": { + "name": "USSR - blue", + "countries": [ + "SUN", + "RUS" + ] + }, + "raf thunderbolt": { + "name": "RAF Thunderbolt", + "countries": [] + }, + "usaaf 509th fs, 405th fg, eto 1944, chief ski-u-mah d40": { + "name": "509th FS 405th FG \"Chief Ski-U-Mah\"", + "countries": "All" + }, + "warchief": { + "name": "WarChief", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "Single propellor, straight wing, 1 crew. Mustang", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "S-3B Tanker": { + "name": "S-3B Tanker", + "coalition": "blue", + "label": "S-3B Tanker", + "era": "Early Cold War", + "shortLabel": "S3B", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Tanker" + ] + } + ], + "filename": "s-3.png", + "enabled": true, + "liveries": { + "usaf standard": { + "name": "NAVY Standard", + "countries": [ + "USA" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, straight wing, 4 crew. Viking", + "abilities": "Tanker, Drogue AAR, Carrier", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "Su-17M4": { + "name": "Su-17M4", + "coalition": "red", + "label": "Su-17M4 Fitter", + "era": "Mid Cold War", + "shortLabel": "S17", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "UB-32*4,R-60M*2,FAB-250*4", + "name": "UB-32*4,R-60M*2,FAB-250*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 6 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100*24,R-60M*2", + "name": "FAB-100*24,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "UB-32*4,R-60M*2,Fuel*2", + "name": "UB-32*4,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "B-8*4,R-60M*2,FAB-250*4", + "name": "B-8*4,R-60M*2,FAB-250*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,R-60M*2,Fuel*2", + "name": "Kh-29L*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "B-8*4,R-60M*2,Fuel*2", + "name": "B-8*4,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29T*2,R-60M*2,Fuel*2", + "name": "Kh-29T*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 6 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "BetAB-500*6,R-60M*2", + "name": "BetAB-500*6,R-60M*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25MR*4,R-60M*2,Fuel*2", + "name": "Kh-25MR*4,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-24*4,R-60M*2,Fuel*2", + "name": "S-24*4,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh25MPU*2_Kh25ML*2_,R60M*2_Fuel*2", + "name": "Kh25MPU*2_Kh25ML*2_,R60M*2_Fuel*2", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh58*2_Kh25MPU*2_R60M*2_Fuel*2", + "name": "Kh58*2_Kh25MPU*2_R60M*2_Fuel*2", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*16,R-60M*2", + "name": "FAB-250*16,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25ML*4,R-60M*2,Fuel*2", + "name": "Kh-25ML*4,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-500AO*4,SPPU-22*2,R-60M*2", + "name": "RBK-500AO*4,SPPU-22*2,R-60M*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 4 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 2 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-24*4,R-60M*2,FAB-250*4", + "name": "S-24*4,R-60M*2,FAB-250*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel tank 1150L", + "quantity": 4 + } + ], + "enabled": true, + "code": "Fuel*4", + "name": "Fuel*4", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-500*6,R-60M*2", + "name": "FAB-500*6,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25ML*2,Kh-29L*2,R-60*2", + "name": "Kh-25ML*2,Kh-29L*2,R-60*2", + "roles": [ + "Antiship Strike" + ] + } + ], + "filename": "su-17.png", + "enabled": true, + "liveries": { + "af standard (worn-out)": { + "name": "af standard (worn-out)", + "countries": [ + "UKR" + ] + }, + "shap limanskoye ab": { + "name": "shap limanskoye ab", + "countries": [ + "UKR" + ] + }, + "af standard (rus)": { + "name": "af standard", + "countries": [ + "SUN", + "RUS" + ] + }, + "af standard (worn-out) (rus)": { + "name": "af standard (worn-out)", + "countries": [ + "RUS" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "UKR" + ] + } + }, + "type": "Aircraft", + "description": "Single jet engine, swept wing, 1 crew. Fitter", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Su-24M": { + "name": "Su-24M", + "coalition": "red", + "label": "Su-24M Fencer", + "era": "Mid Cold War", + "shortLabel": "S24", + "loadouts": [ + { + "items": [ + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "Fuel tank 3000L", + "quantity": 2 + } + ], + "enabled": true, + "code": "B-8*2,Fuel*2", + "name": "B-8*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "Fuel tank 3000L", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "B-8*2,Fuel*3", + "name": "B-8*2,Fuel*3", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "B-8*6", + "name": "B-8*6", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "BetAB-500*4,R-60M*2", + "name": "BetAB-500*4,R-60M*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "FAB-100*24", + "name": "FAB-100*24", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-1500*2,R-60M*2", + "name": "FAB-1500*2,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 8 + } + ], + "enabled": true, + "code": "FAB-250*8", + "name": "FAB-250*8", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "FAB-500*4,R-60M*2", + "name": "FAB-500*4,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel tank 3000L", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel*3", + "name": "Fuel*3", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "KAB-1500L - 1500kg Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-1500*2,R-60M*2,Fuel", + "name": "KAB-1500*2,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "KAB-500LG - 500kg Laser Guided Bomb", + "quantity": 4 + } + ], + "enabled": true, + "code": "KAB-500*4,R-60M*2", + "name": "KAB-500*4,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + } + ], + "enabled": true, + "code": "Kh-25ML*4", + "name": "Kh-25ML*4", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Kh-25MR (AS-10 Karen) - 300kg, ASM, 10km, RC Guided", + "quantity": 4 + } + ], + "enabled": true, + "code": "Kh-25MR*4", + "name": "Kh-25MR*4", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,R-60M*2", + "name": "Kh-29L*2,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29T*2,R-60M*2", + "name": "Kh-29T*2,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-31A*2,R-60M*2", + "name": "Kh-31A*2,R-60M*2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-31A*2,R-60M*2,Fuel", + "name": "Kh-31A*2,R-60M*2,Fuel", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-59M*2,R-60M*2,Fuel", + "name": "Kh-59M*2,R-60M*2,Fuel", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh25MPU*2_Kh25ML*2_L-081", + "name": "Kh25MPU*2_Kh25ML*2_L-081", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh31P*2_Kh25ML*2_L-081", + "name": "Kh31P*2_Kh25ML*2_L-081", + "roles": [ + "SEAD", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh58*2_Kh25ML*2_L-081", + "name": "Kh58*2_Kh25ML*2_L-081", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 8 + } + ], + "enabled": true, + "code": "RBK-250*8", + "name": "RBK-250*8", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "APU-60-1M with R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "RBK-500AO*4,R-60M*2", + "name": "RBK-500AO*4,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 2 + }, + { + "name": "Fuel tank 3000L", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-24*2,Fuel*3", + "name": "S-24*2,Fuel*3", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "S-24B - 240mm UnGd Rkt, 235kg, HE/Frag, (Low Smk)", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-24*4", + "name": "S-24*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "Fuel tank 3000L", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-25*2,Fuel*3", + "name": "S-25*2,Fuel*3", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-25*4", + "name": "S-25*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "Fuel tank 3000L", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "UB-13*2,Fuel*3", + "name": "UB-13*2,Fuel*3", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "UB-13*4", + "name": "UB-13*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 4 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "UB-13*4,FAB-500*2", + "name": "UB-13*4,FAB-500*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 2 + }, + { + "name": "Fuel tank 3000L", + "quantity": 2 + }, + { + "name": "Fuel tank 2000L", + "quantity": 1 + } + ], + "enabled": true, + "code": "UB-32*2,Fuel*3", + "name": "UB-32*2,Fuel*3", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + } + ], + "enabled": true, + "code": "UB-32*4", + "name": "UB-32*4", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "UB-32*4,FAB-250*4", + "name": "UB-32*4,FAB-250*4", + "roles": [ + "Strike" + ] + } + ], + "filename": "su-24.png", + "enabled": true, + "liveries": { + "syrian air force": { + "name": "Syrian Air Force", + "countries": [ + "SYR" + ] + }, + "iran air force": { + "name": "Iran Air Force", + "countries": [ + "IRN" + ] + }, + "algerian af kx-12": { + "name": "Algerian AF KX-12", + "countries": [ + "DZA" + ] + }, + "ukrainian air force standard": { + "name": "Ukrainian Air Force", + "countries": [ + "UKR" + ] + }, + "kazakhstan air force": { + "name": "600th Airbase Kazakhstan", + "countries": [ + "KAZ" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "SUN", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swing wing, 2 crew. Fencer", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Su-25": { + "name": "Su-25", + "coalition": "red", + "label": "Su-25T Frogfoot", + "era": "Late Cold War", + "shortLabel": "S25", + "loadouts": [ + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 2 + } + ], + "enabled": true, + "code": "2-25L*2, KH-25ML*2, RBK-500*2, B-8MI*2, R-60M*2", + "name": "2-25L*2, KH-25ML*2, RBK-500*2, B-8MI*2, R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "BetAB-500*6,R-60M*2,Fuel*2", + "name": "BetAB-500*6,R-60M*2,Fuel*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 8 + } + ], + "enabled": true, + "code": "BetAB-500ShP*8,R-60M*2", + "name": "BetAB-500ShP*8,R-60M*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100*16,R-60M*2,Fuel*2", + "name": "FAB-100*16,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 8 + } + ], + "enabled": true, + "code": "FAB-100*32,R-60M*2", + "name": "FAB-100*32,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "SAB-100MN - 100 kg Illumination Bomb", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", + "name": "FAB-250*2,SPPU-22*2,SAB-100*4,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", + "name": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", + "name": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", + "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*6,R-60M*2,Fuel*2", + "name": "FAB-250*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-500*6,R-60M*2,Fuel*2", + "name": "FAB-500*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25*4,Kh-29T*2,R-60*2", + "name": "Kh-25*4,Kh-29T*2,R-60*2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-25ML*4,R-60M*2,Fuel*2", + "name": "Kh-25ML*4,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,Kh-25ML*2,R-60M*2,Fuel*2", + "name": "Kh-29L*2,Kh-25ML*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,Kh-25ML*4,R-60M*2", + "name": "Kh-29L*2,Kh-25ML*4,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", + "name": "Kh-29L*2,Kh-25ML*4,S-25L*2,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,R-60M*2,Fuel*2", + "name": "Kh-29L*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", + "name": "RBK-250*2,S-8KOM*80,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "RBK-250*4,S-8KOM*80,R-60M*2", + "name": "RBK-250*4,S-8KOM*80,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 8 + } + ], + "enabled": true, + "code": "RBK-250*8,R-60M*2", + "name": "RBK-250*8,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", + "name": "RBK-500AO*4,S-8KOM*40,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-500AO*6,R-60M*2,Fuel*2", + "name": "RBK-500AO*6,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-25*6,R-60M*2,Fuel*2", + "name": "S-25*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 6 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-25*6,SPPU-22*2,R-60M*2", + "name": "S-25*6,SPPU-22*2,R-60M*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-25L*6,R-60*2,Fuel*2", + "name": "S-25L*6,R-60*2,Fuel*2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 6 + } + ], + "enabled": true, + "code": "S-25L*6,UB-13*2,R-60M*2", + "name": "S-25L*6,UB-13*2,R-60M*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-8KOM*120,R-60M*2,Fuel*2", + "name": "S-8KOM*120,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8TsM SM Orange", + "quantity": 8 + } + ], + "enabled": true, + "code": "S-8TsM*160,R-60*2", + "name": "S-8TsM*160,R-60*2", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "SAB-100MN - 100 kg Illumination Bomb", + "quantity": 8 + } + ], + "enabled": true, + "code": "SAB-100*8,R-60*2", + "name": "SAB-100*8,R-60*2", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "UB-13*6,R-60M*2,Fuel*2", + "name": "UB-13*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + } + ], + "filename": "su-25.png", + "enabled": false, + "liveries": { + "broken camo scheme #2 (native). 452th shap": { + "name": "broken camo scheme #2 (native). 452th shap.", + "countries": [ + "UKR" + ] + }, + "broken camo scheme #1 (native). 299th oshap": { + "name": "broken camo scheme #1 (native). 299th oshap.", + "countries": [ + "UKR" + ] + }, + "field camo scheme #1 (native)": { + "name": "field camo scheme #1 (native)", + "countries": [ + "SUN", + "RUS" + ] + }, + "field camo scheme #1 (native)01": { + "name": "field camo scheme #1 (native)", + "countries": [ + "GRG" + ] + }, + "haf camo": { + "name": "Hellenic Airforce - Camo (Fictional)", + "countries": [ + "GRC" + ] + }, + "`scorpion` demo scheme (native)": { + "name": "`scorpion` demo scheme (native)", + "countries": [ + "GRG" + ] + }, + "abkhazian air force": { + "name": "Abkhazian Air Force", + "countries": [ + "ABH" + ] + }, + "field camo scheme #3 (worn-out). 960th shap": { + "name": "field camo scheme #3 (worn-out). 960th shap.", + "countries": [ + "RUS" + ] + }, + "petal camo scheme #1 (native). 299th brigade": { + "name": "petal camo scheme #1 (native). 299th brigade.", + "countries": [ + "UKR" + ] + }, + "petal camo scheme #2 (native). 299th brigade": { + "name": "petal camo scheme #2 (native). 299th brigade.", + "countries": [ + "UKR" + ] + }, + "algerian af desert fictional": { + "name": "Algerian AF Desert Fictional", + "countries": [ + "DZA" + ] + }, + "forest camo scheme #1 (native)": { + "name": "forest camo scheme #1 (native)", + "countries": [ + "RUS" + ] + }, + "irgc 54": { + "name": "IRGC 54", + "countries": [ + "IRN" + ] + }, + "field camo scheme #2 (native). 960th shap": { + "name": "field camo scheme #2 (native). 960th shap.", + "countries": [ + "RUS" + ] + }, + "haf aegean ghost": { + "name": "Hellenic Airforce - Aegean Ghost (Fictional)", + "countries": [ + "GRC" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 1 crew. Frogfoot", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Su-25T": { + "name": "Su-25T", + "coalition": "red", + "label": "Su-25T Frogfoot", + "era": "Late Cold War", + "shortLabel": "S25", + "loadouts": [ + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + }, + { + "name": "Mercury LLTV Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "name": "APU-8 Vikhr-M*2,Kh-25ML,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 2 + }, + { + "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + }, + { + "name": "Mercury LLTV Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "name": "APU-8 Vikhr-M*2,S-25L*2,R-73*2,SPPU-22*2,Mercury LLTV Pod,MPS-410", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "BetAB-500*6,R-60M*2,Fuel*2", + "name": "BetAB-500*6,R-60M*2,Fuel*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 8 + } + ], + "enabled": true, + "code": "BetAB-500ShP*8,R-60M*2", + "name": "BetAB-500ShP*8,R-60M*2", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-100*16,R-60M*2,Fuel*2", + "name": "FAB-100*16,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "MBD2-67U with 4 x FAB-100 - 100kg GP Bombs LD", + "quantity": 8 + } + ], + "enabled": true, + "code": "FAB-100*32,R-60M*2", + "name": "FAB-100*32,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", + "name": "FAB-250*4,S-25*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "SAB-100MN - 100 kg Illumination Bomb", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,SPPU-22*2,SAB-100*2,R-60M*2", + "name": "FAB-250*4,SPPU-22*2,SAB-100*2,R-60M*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", + "name": "FAB-250*4,UB-13*2,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", + "name": "FAB-250*4,UB-13*2,R-60M*2,SPPU-22*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-250*6,R-60M*2,Fuel*2", + "name": "FAB-250*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "FAB-500*6,R-60M*2,Fuel*2", + "name": "FAB-500*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "Fuel tank 800L Wing", + "quantity": 4 + } + ], + "enabled": true, + "code": "Fuel*4", + "name": "Fuel*4", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "KAB-500Kr - 500kg TV Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", + "name": "KAB-500Kr*2,Kh-25ML*2,R-73*2,MPS-410,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", + "name": "Kh-29L*2,Kh-25ML*4,R-73*2,ECM", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Mercury LLTV Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*2,Kh-25ML*4,R-73*2,Mercury LLTV Pod,MPS-410", + "name": "Kh-29L*2,Kh-25ML*4,R-73*2,Mercury LLTV Pod,MPS-410", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Mercury LLTV Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", + "name": "Kh-29L*2,R-73*2,Fuel*2,Mercury LLTV Pod,MPS-410", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "APU-8 - 8 x 9M127-1 Vikhr-M ATGM, LOSBR, Tandem HEAT/Frag", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "KH-29T*2, VIKHR*2, ECM", + "name": "KH-29T*2, VIKHR*2, ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29T*2,Kh-25ML*4,R-73*2,MPS-410", + "name": "Kh-29T*2,Kh-25ML*4,R-73*2,MPS-410", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", + "name": "Kh-29T*2,R-73*2,Fuel*2,MPS-410", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", + "name": "Kh25MPU*4_R73*2_Fuel*2_L-081_MPS-410", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", + "name": "Kh58*2_Kh25ML*4_R73*2_L-081_MPS-410", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "MPS-410", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-25ML (AS-10 Karen) - 300kg, ASM, Semi-Act Laser", + "quantity": 2 + }, + { + "name": "Kh-25MPU (Updated AS-12 Kegler) - 320kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "Kh-58U (AS-11 Kilter) - 640kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "L-081 Fantasmagoria ELINT pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh58*2_Kh25MPU*2_Kh25ML*2_R73*2_L-081_MPS-410", + "name": "Kh58*2_Kh25MPU*2_Kh25ML*2_R73*2_L-081_MPS-410", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", + "quantity": 8 + } + ], + "enabled": true, + "code": "KMGU-2 (AO-2.5RT)*8,R-60M*2", + "name": "KMGU-2 (AO-2.5RT)*8,R-60M*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", + "quantity": 8 + } + ], + "enabled": true, + "code": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", + "name": "KMGU-2 (PTAB-2.5KO)*8,R-60M*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 2 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-250*2,UB-32*4,R-60M*2,Fuel*2", + "name": "RBK-250*2,UB-32*4,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "RBK-250*4,UB-32*4,R-60M*2", + "name": "RBK-250*4,UB-32*4,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 8 + } + ], + "enabled": true, + "code": "RBK-250*8,R-60M*2", + "name": "RBK-250*8,R-60M*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "UB-32A pod - 32 x S-5KO, 57mm UnGd Rkts, HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", + "name": "RBK-500AO*4,UB-32*2,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "RBK-500AO*6,R-60M*2,Fuel*2", + "name": "RBK-500AO*6,R-60M*2,Fuel*2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "SPPU-22-1 - 2 x 23mm GSh-23L Autocannon Pod", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", + "name": "S-25*2,SPPU-22*4,R-60M*2,R-73*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-25*6,R-60M*2,Fuel*2", + "name": "S-25*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "S-25L - 320Kg, 340mm Laser Guided Rkt", + "quantity": 6 + } + ], + "enabled": true, + "code": "S-25L*6,UB-13*2,R-60M*2", + "name": "S-25L*6,UB-13*2,R-60M*2", + "roles": [ + "CAS", + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "S-8KOM*120,R-60M*2,Fuel*2", + "name": "S-8KOM*120,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-60M (AA-8 Aphid) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 6 + }, + { + "name": "Fuel tank 800L Wing", + "quantity": 2 + } + ], + "enabled": true, + "code": "UB-13*6,R-60M*2,Fuel*2", + "name": "UB-13*6,R-60M*2,Fuel*2", + "roles": [ + "Strike" + ] + } + ], + "filename": "su-25.png", + "enabled": true, + "liveries": { + "af standard 2": { + "name": "af standard 2", + "countries": [ + "SUN", + "RUS" + ] + }, + "algerian af grey ku-02": { + "name": "Algerian AF Grey KU-02", + "countries": [ + "DZA" + ] + }, + "su-25t test scheme": { + "name": "su-25t test scheme", + "countries": [ + "RUS" + ] + }, + "haf - fictional": { + "name": "Hellenic Airforce (Fictional)", + "countries": [ + "GRC" + ] + }, + "algerian af trainer ku-04": { + "name": "Algerian AF Trainer KU-04", + "countries": [ + "DZA" + ] + }, + "algerian af grey ku-01": { + "name": "Algerian AF Grey KU-01", + "countries": [ + "DZA" + ] + }, + "af standard 101": { + "name": "af standard 1", + "countries": [ + "GRG" + ] + }, + "algerian af desert ku-03": { + "name": "Algerian AF Desert KU-03", + "countries": [ + "DZA" + ] + }, + "af standard 1": { + "name": "af standard 1", + "countries": [ + "SUN", + "RUS" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "GRG" + ] + } + }, + "type": "Attack", + "description": "2 jet engine, swept wing, 1 crew. Frogfoot", + "abilities": "Fox 2 and gun, Dumb bombs, rockets, SEAD and ATGMs, Subsonic", + "canTargetPoint": true + }, + "Su-27": { + "name": "Su-27", + "coalition": "red", + "label": "Su-27 Flanker", + "era": "Late Cold War", + "shortLabel": "S27", + "loadouts": [ + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": " CAS S-25 Rockets", + "name": " CAS S-25 Rockets", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500ShP - 500kg Concrete Piercing HD w booster Bomb", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500ShP*6,R-73*2,ECM", + "name": "BetAB-500ShP*6,R-73*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS S-13 Rockets", + "name": "CAS S-13 Rockets", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-25 Rockets + FAB-500 Bombs", + "name": "CAS S-25 Rockets + FAB-500 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets", + "name": "CAS S-8KOM Rockets", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + FAB-100 Bombs", + "name": "CAS S-8KOM Rockets + FAB-100 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 5 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", + "quantity": 1 + }, + { + "name": "MBD3-U6-68 with 3 x FAB-250 - 250kg GP Bombs LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + FAB-250 Bombs", + "name": "CAS S-8KOM Rockets + FAB-250 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + FAB-500 Bombs", + "name": "CAS S-8KOM Rockets + FAB-500 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", + "quantity": 3 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + KMGU PTAB", + "name": "CAS S-8KOM Rockets + KMGU PTAB", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", + "name": "CAS S-8KOM Rockets + RBK-250 PTAB2.5", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + RBK-500 PTAB1", + "name": "CAS S-8KOM Rockets + RBK-500 PTAB1", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM Rockets + RBK-500 PTAB10", + "name": "CAS S-8KOM Rockets + RBK-500 PTAB10", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS S-8OFP Rockets", + "name": "CAS S-8OFP Rockets", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8OFP Rockets + FAB-100 Bombs", + "name": "CAS S-8OFP Rockets + FAB-100 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8OFP Rockets + FAB-500 Bombs", + "name": "CAS S-8OFP Rockets + FAB-500 Bombs", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "ECM", + "name": "ECM", + "roles": [ + "FAC-A" + ] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*6,R-73*2,ECM", + "name": "FAB-500*6,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "KMGU-2 - 96 x AO-2.5RT Dispenser (CBU) HE/Frag", + "quantity": 5 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KMGU-2 (AO-2.5RT)*5,R-73*2,ECM", + "name": "KMGU-2 (AO-2.5RT)*5,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "KMGU-2 - 96 x PTAB-2.5KO Dispenser (CBU) HEAT/AP", + "quantity": 5 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KMGU-2 (PTAB-2.5KO)*5,R-73*2,ECM", + "name": "KMGU-2 (PTAB-2.5KO)*5,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27ER*4,R-27ET*2,ECM", + "name": "R-73*2,R-27ER*4,R-27ET*2,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27ER*6,ECM", + "name": "R-73*2,R-27ER*6,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*4,ECM", + "name": "R-73*4,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4,R-27ER*4,R-27ET*2", + "name": "R-73*4,R-27ER*4,R-27ET*2", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*4,R-27ER*6", + "name": "R-73*4,R-27ER*6", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*6", + "name": "R-73*6", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-13*10,RBK-500AO*2,FAB-500*2,R-73*2,ECM", + "name": "S-13*10,RBK-500AO*2,FAB-500*2,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-25*2,FAB-500*4,R-73*4", + "name": "S-25*2,FAB-500*4,R-73*4", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-25*4, FAB-500*4, R-73*2, ECM", + "name": "S-25*4, FAB-500*4, R-73*2, ECM", + "roles": [ + "Antiship Strike" + ] + } + ], + "filename": "su-27.png", + "enabled": true, + "liveries": { + "kubinka afb (russian knights old)": { + "name": "Kubinka AFB (Russian Knights Old)", + "countries": [ + "RUS" + ] + }, + "mirgorod afb (831th brigade)": { + "name": "Mirgorod AFB (831th brigade)", + "countries": [ + "UKR" + ] + }, + "lypetsk afb (falcons of russia)": { + "name": "Lypetsk AFB (Falcons of Russia)", + "countries": [ + "RUS" + ] + }, + "hotilovo afb": { + "name": "Hotilovo AFB", + "countries": [ + "RUS" + ] + }, + "plaaf k2s new parade": { + "name": "PLAAF K2S new parade", + "countries": [ + "CHN" + ] + }, + "plaaf standard": { + "name": "PLAAF Standard", + "countries": [ + "CHN" + ] + }, + "algerian af grey 04": { + "name": "Algerian AF GREY 04", + "countries": [ + "DZA" + ] + }, + "air force standard early": { + "name": "Air Force Standard Early", + "countries": [ + "SUN", + "RUS" + ] + }, + "air force ukraine standard": { + "name": "Air Force Ukraine Standard", + "countries": [ + "UKR" + ] + }, + "planaf hh8s": { + "name": "PLANAF HH8S", + "countries": [ + "CHN" + ] + }, + "ozerne afb (9th brigade)": { + "name": "Ozerne AFB (9th brigade)", + "countries": [ + "UKR" + ] + }, + "air force ukraine standard early": { + "name": "Air Force Ukraine Standard Early", + "countries": [ + "UKR" + ] + }, + "algerian af blue 02": { + "name": "Algerian AF Blue 02", + "countries": [ + "DZA" + ] + }, + "plaaf k1s old": { + "name": "PLAAF K1S old", + "countries": [ + "CHN" + ] + }, + "m gromov fri": { + "name": "M Gromov FRI", + "countries": [ + "RUS" + ] + }, + "plaaf k33s": { + "name": "PLAAF K33S", + "countries": [ + "CHN" + ] + }, + "air force standard": { + "name": "Air Force Standard", + "countries": [ + "SUN", + "RUS" + ] + }, + "plaaf k2s old": { + "name": "PLAAF K2S old", + "countries": [ + "CHN" + ] + }, + "chkalovsk afb (689 gviap)": { + "name": "Chkalovsk AFB (689 GvIAP)", + "countries": [ + "RUS" + ] + }, + "kazakhstan air defense forces": { + "name": "Kazakhstan Air Defense Forces", + "countries": [ + "KAZ" + ] + }, + "haf aegean ghost": { + "name": "Hellenic Airforce - Aegean Ghost (Fictional)", + "countries": [ + "GRC" + ] + }, + "besovets afb": { + "name": "Besovets AFB", + "countries": [ + "RUS" + ] + }, + "kilpyavr afb (maresyev)": { + "name": "Kilpyavr AFB (Maresyev)", + "countries": [ + "RUS" + ] + }, + "mirgorod afb (digital camo)": { + "name": "Mirgorod AFB (Digital camo)", + "countries": [ + "UKR" + ] + }, + "plaaf k2s new": { + "name": "PLAAF K2S new", + "countries": [ + "CHN" + ] + }, + "air force standard old": { + "name": "Air Force Standard old", + "countries": [ + "SUN", + "RUS" + ] + }, + "lodeynoye pole afb (177 iap)": { + "name": "Lodeynoye pole AFB (177 IAP)", + "countries": [ + "RUS" + ] + }, + "kubinka afb (russian knights)": { + "name": "Kubinka AFB (Russian Knights)", + "countries": [ + "RUS" + ] + }, + "lypetsk afb (shark)": { + "name": "Lypetsk AFB (Shark)", + "countries": [ + "RUS" + ] + }, + "besovets afb 2 squadron": { + "name": "Besovets AFB 2 squadron", + "countries": [ + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 1 crew. Flanker", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Su-30": { + "name": "Su-30", + "coalition": "red", + "label": "Su-30 Super Flanker", + "era": "Late Cold War", + "shortLabel": "S30", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-77*6,ECM", + "name": "R-73*2,R-77*6,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27T (AA-10 Alamo B) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27T*2,R-27R*4", + "name": "R-73*2,R-27T*2,R-27R*4", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500AO*6,R-73*2,ECM", + "name": "RBK-500AO*6,R-73*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-31P*2,Kh-31A*2,R-73*2,R-77*2,ECM", + "name": "Kh-31P*2,Kh-31A*2,R-73*2,R-77*2,ECM", + "roles": [ + "Antiship Strike", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27T (AA-10 Alamo B) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4,R-27T*2,R-27R*4", + "name": "R-73*4,R-27T*2,R-27R*4", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-77*2,Kh-35*2,ECM", + "name": "R-73*2,R-77*2,Kh-35*2,ECM", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-35*2,Kh-31P*2,R-73*2,R-77*2,ECM", + "name": "Kh-35*2,Kh-31P*2,R-73*2,R-77*2,ECM", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*4,B-8*2,R-73*2,ECM", + "name": "FAB-250*4,B-8*2,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "ECM", + "name": "ECM", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "KAB-1500L - 1500kg Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-1500*2,R-73*2,R-77*2,ECM", + "name": "KAB-1500*2,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-250*6,R-73*2,ECM", + "name": "RBK-250*6,R-73*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*4,R-77*6", + "name": "R-73*4,R-77*6", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*4,S-25*2,R-73*2,ECM", + "name": "FAB-250*4,S-25*2,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27R*2,R-27ER*4,ECM", + "name": "R-73*2,R-27R*2,R-27ER*4,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27T (AA-10 Alamo B) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27T*2,R-27ER*2,R-77*2,ECM", + "name": "R-73*2,R-27T*2,R-27ER*2,R-77*2,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-1500*2,R-73*2,R-77*2,ECM", + "name": "FAB-1500*2,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27T (AA-10 Alamo B) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*4,R-27T*2,R-27ER*2,R-77*2", + "name": "R-73*4,R-27T*2,R-27ER*2,R-77*2", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-59M*2,R-73*2,R-77*2,ECM", + "name": "Kh-59M*2,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*6,R-73*2,ECM", + "name": "FAB-500*6,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2,R-27ER*4", + "name": "R-73*4,R-27R*2,R-27ER*4", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*4,R-73*2,R-77*2,ECM", + "name": "Kh-29L*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500*6,R-73*2,ECM", + "name": "BetAB-500*6,R-73*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4", + "name": "R-73*4", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*4,UB-13*2,R-73*2,ECM", + "name": "FAB-250*4,UB-13*2,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 4 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-77*4,R-27ER*2,ECM", + "name": "R-73*2,R-77*4,R-27ER*2,ECM", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "KAB-500LG - 500kg Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-500*4,R-73*2,R-77*2,ECM", + "name": "KAB-500*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*6,R-73*2,ECM", + "name": "FAB-250*6,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 4 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 2 + } + ], + "enabled": true, + "code": "R-73*4,R-77*4,R-27ER*2", + "name": "R-73*4,R-77*4,R-27ER*2", + "roles": [ + "Escort", + "CAP", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29T*4,R-73*2,R-77*2,ECM", + "name": "Kh-29T*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", + "quantity": 4 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-31P*4,R-73*2,R-77*2,ECM", + "name": "Kh-31P*4,R-73*2,R-77*2,ECM", + "roles": [ + "SEAD" + ] + } + ], + "filename": "su-34.png", + "enabled": true, + "liveries": { + "af standard last": { + "name": "af standard last", + "countries": [ + "RUS" + ] + }, + "`russian knights` team #25": { + "name": "`russian knights` team #25", + "countries": [ + "RUS" + ] + }, + "adf 148th ctc savasleyka ab": { + "name": "adf 148th ctc savasleyka ab", + "countries": [ + "RUS" + ] + }, + "`desert` test paint scheme": { + "name": "`desert` test paint scheme", + "countries": [ + "RUS" + ] + }, + "`test-pilots` team #597": { + "name": "`test-pilots` team #597", + "countries": [ + "RUS" + ] + }, + "`snow` test paint scheme": { + "name": "`snow` test paint scheme", + "countries": [ + "RUS" + ] + }, + "af standard early": { + "name": "af standard early", + "countries": [ + "SUN", + "RUS" + ] + }, + "af standard last (worn-out)": { + "name": "af standard last (worn-out)", + "countries": [ + "RUS" + ] + }, + "af standard early (worn-out)": { + "name": "af standard early (worn-out)", + "countries": [ + "RUS" + ] + }, + "af standard": { + "name": "af standard", + "countries": [ + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 1 crew. Flanker", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Su-33": { + "name": "Su-33", + "coalition": "red", + "label": "Su-33 Navy Flanker", + "era": "Late Cold War", + "shortLabel": "S33", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-250*6,R-73*2,R-27R*2,ECM", + "name": "RBK-250*6,R-73*2,R-27R*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + } + ], + "enabled": true, + "code": "R-73*4", + "name": "R-73*4", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*4,R-27R*2,R-27ER*6", + "name": "R-73*4,R-27R*2,R-27ER*6", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27ET*2,R-27ER*6,ECM", + "name": "R-73*2,R-27ET*2,R-27ER*6,ECM", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "R-27ET (AA-10 Alamo D) - IR Extended Range", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + } + ], + "enabled": true, + "code": "R-73*4,R-27ET*2,R-27ER*6", + "name": "R-73*4,R-27ET*2,R-27ER*6", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*6,R-73*2,R-27R*2,ECM", + "name": "FAB-250*6,R-73*2,R-27R*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "R-27ER (AA-10 Alamo C) - Semi-Act Extended Range", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "R-73*2,R-27R*2,R-27ER*6,ECM", + "name": "R-73*2,R-27R*2,R-27ER*6,ECM", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "ECM", + "name": "ECM", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500*6,R-73*2,R-27R*2,ECM", + "name": "BetAB-500*6,R-73*2,R-27R*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500AO*6,R-73*2,R-27R*2,ECM", + "name": "RBK-500AO*6,R-73*2,R-27R*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "UB-13*4,FAB-250*4,R-73*2,ECM", + "name": "UB-13*4,FAB-250*4,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "S-25*4,FAB-250*4,R-73*2,ECM", + "name": "S-25*4,FAB-250*4,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 6 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*6,R-73*2,R-27R*2,ECM", + "name": "FAB-500*6,R-73*2,R-27R*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "B-8*4,FAB-250*4,R-73*2,ECM", + "name": "B-8*4,FAB-250*4,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "S-25-OFM - 340mm UnGd Rkt, 480kg Penetrator", + "quantity": 4 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "S-25*4,FAB-500*4,R-73*4", + "name": "S-25*4,FAB-500*4,R-73*4", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM rockets + FAB500", + "name": "CAS S-8KOM rockets + FAB500", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8OFP2 MPP", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8OFP rockets + FAB500", + "name": "CAS S-8OFP rockets + FAB500", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-13 Rockets + FAB500", + "name": "CAS S-13 Rockets + FAB500", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-13L pods - 10 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-13 Rockets + FAB100", + "name": "CAS S-13 Rockets + FAB100", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 4 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-250 - 250kg GP Bombs LD", + "quantity": 2 + } + ], + "enabled": true, + "code": "CAS S-8KOM rockets + FAB250", + "name": "CAS S-8KOM rockets + FAB250", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x S-25-OFM - 340mm UnGdrocket, 480kg Penetrator", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-25 Rockets + FAB500", + "name": "CAS S-25 Rockets + FAB500", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM rockets + RBK500 PTAB10", + "name": "CAS S-8KOM rockets + RBK500 PTAB10", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 4 + }, + { + "name": "2 x B-8M1 - 40 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 2 + }, + { + "name": "RBK-500 - 268 x PTAB-1M, 500kg CBU Light HEAT/AP", + "quantity": 4 + } + ], + "enabled": true, + "code": "CAS S-8KOM rockets + RBK500 PTAB1", + "name": "CAS S-8KOM rockets + RBK500 PTAB1", + "roles": [ + "CAS" + ] + } + ], + "filename": "su-34.png", + "enabled": true, + "liveries": { + "t-10k-9 test paint scheme": { + "name": "t-10k-9 test paint scheme", + "countries": [ + "RUS" + ] + }, + "279th kiap 1st squad navy": { + "name": "Navy, 279th kiap, 1st squad", + "countries": [ + "RUS" + ] + }, + "aaf blue 68": { + "name": "Algerian AF BLUE No 68", + "countries": [ + "DZA" + ] + }, + "haf - aegean ghost": { + "name": "Hellenic Airforce - Aegean Ghost (Fictional)", + "countries": [ + "GRC" + ] + }, + "279th kiap 2nd squad syria 2017": { + "name": "Syria 2017, 279th kiap, 2nd squad", + "countries": [ + "RUS" + ] + }, + "aaf grey 12": { + "name": "Algerian AF GREY No 12", + "countries": [ + "DZA" + ] + }, + "t-10k-5 test paint scheme": { + "name": "t-10k-5 test paint scheme", + "countries": [ + "RUS" + ] + }, + "279th kiap 1st squad syria 2017": { + "name": "Syria 2017, 279th kiap, 1st squad", + "countries": [ + "RUS" + ] + }, + "279th kiap 2nd squad navy": { + "name": "Navy, 279th kiap, 2nd squad", + "countries": [ + "RUS" + ] + }, + "t-10k-1 test paint scheme": { + "name": "t-10k-1 test paint scheme", + "countries": [ + "SUN", + "RUS" + ] + }, + "plan carrier air wings j-15": { + "name": "PLAN Carrier Air Wings J-15", + "countries": "All" + } + }, + "type": "Aircraft", + "description": "2 jet engine, swept wing, 1 crew. Flanker", + "abilities": "Drogue AAR, Carrier", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Su-34": { + "name": "Su-34", + "coalition": "red", + "label": "Su-34 Hellduck", + "era": "Modern", + "shortLabel": "S34", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-13L pod - 5 x S-13-OF, 122mm UnGd Rkts, Blast/Frag", + "quantity": 4 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "UB-13*4,FAB-250*4,R-73*2,ECM", + "name": "UB-13*4,FAB-250*4,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-100 - 100kg GP Bomb LD", + "quantity": 4 + }, + { + "name": "MBD3-U6-68 with 6 x FAB-100 - 100kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-100*28,R-73*2,ECM", + "name": "FAB-100*28,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "BetAB-500 - 500kg Concrete Piercing Bomb LD", + "quantity": 8 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "BetAB-500*8,R-73*2,ECM", + "name": "BetAB-500*8,R-73*2,ECM", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*4,R-73*2,R-77*2,ECM", + "name": "Kh-29L*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "KAB-500LG - 500kg Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-500*4,R-73*2,R-77*2,ECM", + "name": "KAB-500*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-250 - 42 x PTAB-2.5M, 250kg CBU Medium HEAT/AP", + "quantity": 8 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", + "name": "RBK-250 PTAB-2.5M*8,R-73*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-250 - 250kg GP Bomb LD", + "quantity": 8 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*8,R-73*2,ECM", + "name": "FAB-250*8,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "ECM", + "name": "ECM", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 4 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29T*4,R-73*2,R-77*2,ECM", + "name": "Kh-29T*4,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 8 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "RBK-500 PTAB-10-5*8,R-73*2,ECM", + "name": "RBK-500 PTAB-10-5*8,R-73*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "FAB-1500 M-54 - 1500kg GP Bomb LD", + "quantity": 3 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-1500*3,R-73*2,R-77*2,ECM", + "name": "FAB-1500*3,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "Kh-59M (AS-18 Kazoo) - 930kg, ASM, IN", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-59M*2,R-73*2,R-77*2,ECM", + "name": "Kh-59M*2,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "B-8M1 - 20 x UnGd Rkts, 80 mm S-8KOM HEAT/Frag", + "quantity": 4 + }, + { + "name": "RBK-500-255 - 30 x PTAB-10-5, 500kg CBU Heavy HEAT/AP", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "B-8*6,R-73*2,R-27R*2,ECM", + "name": "B-8*6,R-73*2,R-27R*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "FAB-500 M-62 - 500kg GP Bomb LD", + "quantity": 8 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*8,R-73*2,ECM", + "name": "FAB-500*8,R-73*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "R-77 (AA-12 Adder) - Active Rdr", + "quantity": 2 + }, + { + "name": "KAB-1500L - 1500kg Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "KAB-1500*2,R-73*2,R-77*2,ECM", + "name": "KAB-1500*2,R-73*2,R-77*2,ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29T (AS-14 Kedge) - 670kg, ASM, TV Guided", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29T*4,R-73*2,R-27R*2,ECM", + "name": "Kh-29T*4,R-73*2,R-27R*2,ECM", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", + "quantity": 4 + }, + { + "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", + "quantity": 2 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-31A*4,Kh-31P*2,R-73*2,R-27R*2,ECM", + "name": "Kh-31A*4,Kh-31P*2,R-73*2,R-27R*2,ECM", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-31A (AS-17 Krypton) - 610kg, AShM, IN & Act Rdr", + "quantity": 6 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-31A*6,R-73*2,R-27R*2,ECM", + "name": "Kh-31A*6,R-73*2,R-27R*2,ECM", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-31P (AS-17 Krypton) - 600kg, ARM, IN & Pas Rdr", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-31P*4,R-73*2,R-27R*2,ECM", + "name": "Kh-31P*4,R-73*2,R-27R*2,ECM", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "L005 Sorbtsiya ECM pod (left)", + "quantity": 1 + }, + { + "name": "R-73 (AA-11 Archer) - Infra Red", + "quantity": 2 + }, + { + "name": "Kh-29L (AS-14 Kedge) - 657kg, ASM, Semi-Act Laser", + "quantity": 4 + }, + { + "name": "R-27R (AA-10 Alamo A) - Semi-Act Rdr", + "quantity": 2 + }, + { + "name": "L005 Sorbtsiya ECM pod (right)", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-29L*4,R-73*2,R-27R*2,ECM", + "name": "Kh-29L*4,R-73*2,R-27R*2,ECM", + "roles": [ + "CAS" + ] + } + ], + "filename": "su-34.png", + "enabled": true, + "liveries": { + "russian air force": { + "name": "1 Russian Air Force", + "countries": [ + "RUS" + ] + }, + "russian air force old": { + "name": "Russian Air Force Old", + "countries": [ + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 Jet engine, swept wing, 2 crew, all weather fighter and strike. Fullback", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Tornado GR4": { + "name": "Tornado GR4", + "coalition": "blue", + "label": "Tornado GR4", + "era": "Late Cold War", + "shortLabel": "GR4", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 1 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Sky-Shadow ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M*2, Fuel*2, ECM", + "name": "AIM-9M*2, Fuel*2, ECM", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 2 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "ALARM", + "quantity": 4 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ALARM*4, Fuel*2, ECM", + "name": "ALARM*4, Fuel*2, ECM", + "roles": [ + "SEAD" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 1 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-16 - 1000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "Sky-Shadow ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", + "name": "GBU-16*2, AIM-9M*2, Fuel*2, ECM", + "roles": [ + "Strike", + "FAC-A", + "Strike" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 1 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "BL-755 CBU - 450kg, 147 Frag/Pen bomblets", + "quantity": 4 + }, + { + "name": "Sky-Shadow ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "BL755*4, AIM-9M*2, Fuel*2, ECM", + "name": "BL755*4, AIM-9M*2, Fuel*2, ECM", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 1 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Sea Eagle - ASM", + "quantity": 2 + }, + { + "name": "Sky-Shadow ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "Sea Eagle*2, AIM-9M*2, Fuel*2, ECM", + "name": "Sea Eagle*2, AIM-9M*2, Fuel*2, ECM", + "roles": [ + "Antiship Strike" + ] + } + ], + "filename": "tornado.png", + "enabled": true, + "liveries": { + "no. 14 squadron raf lossiemouth ab (morayshire)": { + "name": "no. 14 squadron raf lossiemouth ab (morayshire)", + "countries": [ + "UK" + ] + }, + "o of ii (ac) squadron raf marham": { + "name": "o of ii (ac) squadron raf marham", + "countries": [ + "UK" + ] + }, + "bb of 14 squadron raf lossiemouth": { + "name": "bb of 14 squadron raf lossiemouth", + "countries": [ + "UK" + ] + }, + "no. 9 squadron raf marham ab (norfolk)": { + "name": "no. 9 squadron raf marham ab (norfolk)", + "countries": [ + "UK" + ] + }, + "no. 12 squadron raf lossiemouth ab (morayshire)": { + "name": "no. 12 squadron raf lossiemouth ab (morayshire)", + "countries": [ + "UK" + ] + }, + "no. 617 squadron raf lossiemouth ab (morayshire)": { + "name": "no. 617 squadron raf lossiemouth ab (morayshire)", + "countries": [ + "UK" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swing wing, 2 crew, all weather strike.", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Tornado IDS": { + "name": "Tornado IDS", + "coalition": "blue", + "label": "Tornado IDS", + "era": "Late Cold War", + "shortLabel": "IDS", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 2 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Kormoran - ASM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kormoran*2,AIM-9*2,Fuel*2", + "name": "Kormoran*2,AIM-9*2,Fuel*2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 2 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-16 - 1000lb Laser Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "GBU-16*2,AIM-9*2,Fuel*2", + "name": "GBU-16*2,AIM-9*2,Fuel*2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 2 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + } + ], + "enabled": true, + "code": "Fuel*2", + "name": "Fuel*2", + "roles": [ + "FAC-A" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 1 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 4 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Sky-Shadow ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-88*4,AIM-9*2,ECM", + "name": "AGM-88*4,AIM-9*2,ECM", + "roles": [ + "SEAD", + "CAS" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 1 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 2 + }, + { + "name": "Sky-Shadow ECM Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AGM-88*2,AIM-9*2,Fuel*2,ECM", + "name": "AGM-88*2,AIM-9*2,Fuel*2,ECM", + "roles": [ + "SEAD", + "CAS" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 2 + }, + { + "name": "Kormoran - ASM", + "quantity": 4 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kormoran*4,AIM-9*2", + "name": "Kormoran*4,AIM-9*2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 2 + }, + { + "name": "AGM-88C HARM - High Speed Anti-Radiation Missile", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Kormoran - ASM", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kormoran*2,AIM-9*2,AGM-88*2", + "name": "Kormoran*2,AIM-9*2,AGM-88*2", + "roles": [ + "Antiship Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "BOZ-107 - Countermeasure Dispenser", + "quantity": 2 + }, + { + "name": "TORNADO Fuel tank", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 - 500lb GP Bomb LD", + "quantity": 4 + } + ], + "enabled": true, + "code": "Mk-82*4,AIM-9*2,Fuel*2", + "name": "Mk-82*4,AIM-9*2,Fuel*2", + "roles": [ + "Strike" + ] + } + ], + "filename": "tornado.png", + "enabled": true, + "liveries": { + "ita tornado black": { + "name": "Tornado Black", + "countries": [ + "ITA" + ] + }, + "marinefliegergeschwader 2 eggebek ab marineflieger": { + "name": "marinefliegergeschwader 2 eggebek ab marineflieger", + "countries": [ + "GER" + ] + }, + "jagdbombergeschwader 31 `boelcke` norvenich ab luftwaffe": { + "name": "jagdbombergeschwader 31 `boelcke` norvenich ab luftwaffe", + "countries": [ + "GER" + ] + }, + "ita tornado mm7042": { + "name": "Tornado MM7042", + "countries": [ + "ITA" + ] + }, + "ita tornado mm55004": { + "name": "Tornado MM55004", + "countries": [ + "ITA" + ] + }, + "aufklarungsgeschwader 51 `immelmann` jagel ab luftwaffe": { + "name": "aufklarungsgeschwader 51 `immelmann` jagel ab luftwaffe", + "countries": [ + "GER" + ] + }, + "jagdbombergeschwader 33 buchel ab no. 43+19 experimental scheme": { + "name": "jagdbombergeschwader 33 buchel ab no. 43+19 experimental scheme", + "countries": [ + "GER" + ] + }, + "jagdbombergeschwader 32 lechfeld ab luftwaffe": { + "name": "jagdbombergeschwader 32 lechfeld ab luftwaffe", + "countries": [ + "GER" + ] + }, + "ita tornado (sesto stormo diavoli rossi)": { + "name": "Tornado (Sesto Stormo Diavoli Rossi)", + "countries": [ + "ITA" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swing wing, 2 crew, all weather strike.", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Tu-142": { + "name": "Tu-142", + "coalition": "red", + "label": "Tu-142 Bear", + "era": "Mid Cold War", + "shortLabel": "142", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6 x Kh-35 (AS-20 Kayak) - 520kg, AShM, IN & Act Rdr", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-35*6", + "name": "Kh-35*6", + "roles": [ + "Antiship Strike" + ] + } + ], + "filename": "tu-95.png", + "enabled": true, + "liveries": { + "af standard": { + "name": "af standard", + "countries": [ + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "4 turboprop, swept wing, 11 crew, bomber. Bear", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Tu-160": { + "name": "Tu-160", + "coalition": "red", + "label": "Tu-160 Blackjack", + "era": "Late Cold War", + "shortLabel": "160", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "6 x Kh-65 (AS-15B Kent) - 1250kg, ASM, IN & MCC", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-65*12", + "name": "Kh-65*12", + "roles": [ + "Strike" + ] + } + ], + "filename": "tu-160.png", + "enabled": true, + "liveries": { + "af standard": { + "name": "af standard", + "countries": [ + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swing wing, 4 crew bomber. Blackjack", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Tu-22M3": { + "name": "Tu-22M3", + "coalition": "red", + "label": "Tu-22M3 Backfire", + "era": "Late Cold War", + "shortLabel": "T22", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-22N", + "name": "Kh-22N", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Kh-22 (AS-4 Kitchen) - 1000kg, AShM, IN & Act/Pas Rdr", + "quantity": 2 + } + ], + "enabled": true, + "code": "Kh-22N*2", + "name": "Kh-22N*2", + "roles": [ + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "MBD3-U9M with 9 x FAB-250 - 250kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "33 x FAB-250 - 250kg GP Bombs LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*69", + "name": "FAB-250*69", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "33 x FAB-500 M-62 - 500kg GP Bombs LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*33", + "name": "FAB-500*33", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "MBD3-U9M with 9 x FAB-250 - 250kg GP Bombs LD", + "quantity": 4 + }, + { + "name": "33 x FAB-500 M-62 - 500kg GP Bombs LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-500*33, FAB-250*36", + "name": "FAB-500*33, FAB-250*36", + "roles": [ + "Strike", + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "33 x FAB-250 - 250kg GP Bombs LD", + "quantity": 1 + } + ], + "enabled": true, + "code": "FAB-250*33", + "name": "FAB-250*33", + "roles": [ + "Strike", + "Runway Attack" + ] + } + ], + "filename": "tu-22.png", + "enabled": true, + "liveries": { + "af standard": { + "name": "af standard", + "countries": [ + "UKR", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "2 jet engine, swing wing, 4 crew bomber. Backfire", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "Tu-95MS": { + "name": "Tu-95MS", + "coalition": "red", + "label": "Tu-95MS Bear", + "era": "Mid Cold War", + "shortLabel": "T95", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + }, + { + "items": [ + { + "name": "6 x Kh-65 (AS-15B Kent) - 1250kg, ASM, IN & MCC", + "quantity": 1 + } + ], + "enabled": true, + "code": "Kh-65*6", + "name": "Kh-65*6", + "roles": [ + "Strike" + ] + } + ], + "filename": "tu-95.png", + "enabled": true, + "liveries": { + "af standard": { + "name": "af standard", + "countries": [ + "UKR", + "RUS" + ] + } + }, + "type": "Aircraft", + "description": "4 turboprop, swept wing, 6 crew, bomber. Bear", + "abilities": "", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + }, + "F-15ESE": { + "name": "F-15ESE", + "coalition": "", + "label": "F-15E Strike Eagle", + "shortLabel": "15E", + "era": "", + "enabled": true, + "loadouts": [ + { + "items": [ + { + "name": "Captive AIM-9M for ACM", + "quantity": 1 + }, + { + "name": "BDU-50LGB * 2", + "quantity": 2 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", + "name": " AIM-120C x 2, CATM-9M, GBU-12 x 4, TGP, NVP", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "Mk-82 * 6", + "quantity": 2 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", + "name": " AIM-9M x 4, MK-82 x 12, TGP, Fuel Tank x 2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "Fuel tank 610 gal", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "BLU-107 * 6", + "quantity": 2 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C x 2, AIM-9M x 2, BLU-107 x 12, TGP, NVP, Fuel Tank", + "name": "AIM-120C x 2, AIM-9M x 2, BLU-107 x 12, TGP, NVP, Fuel Tank", + "roles": [ + "Runway Attack" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-12 * 4", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "GBU-10 * 2", + "quantity": 1 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", + "name": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 4, GBU-10 x 2, TGP, NVP, FUel Tank x 2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "GBU-12 * 4", + "quantity": 2 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 9, TGP, NVP, FUel Tank x 2", + "name": "AIM-120C x 2, AIM-9M x 2, GBU-12 x 9, TGP, NVP, FUel Tank x 2", + "roles": [ + "Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", + "name": "AIM-120C x 4, AIM-9M x4, TGP, NVP, FUel Tank x 2", + "roles": [ + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "Mk-82 AIR * 6", + "quantity": 2 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", + "name": "AIM-120C x2, AIM-9M x 2, Mk-84 x 3, Mk-82AIR x 12", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", + "name": "AIM-120Cx4, AIM-9Mx4, Fuel Tanks x 2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 4 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", + "name": "AIM-9M x 4, AIM-120B x 4, TGP, NVP, Fuel Tanks x 2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "CBU-87 * 6", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9M x 4, AIM-120C x 2, CBU-87 x 6, TGP", + "name": "AIM-9M x 4, AIM-120C x 2, CBU-87 x 6, TGP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "AIM-7MH Sparrow Semi-Active Radar", + "quantity": 2 + }, + { + "name": "Mk-20 Rockeye * 6", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, AIM-7M x 2, Mk-20 x 2, NVP, Fuel Tanks x 2", + "name": "AIM-9M x 4, AIM-7M x 2, Mk-20 x 2, NVP, Fuel Tanks x 2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "CBU-87 * 3", + "quantity": 2 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", + "name": "AIM-9M x 4, CBU-87 x 6, TGP, Fuel Tank x 2", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "Mk-20 Rockeye * 6", + "quantity": 2 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", + "name": "AIM-9M x 4, Mk-20 x 12, NVP, Fuel Tanks x 2", + "roles": [ + "Strike", + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "Mk-82 * 6", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "CBU-97 * 3", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", + "name": "AIM-9M x 4, Mk-84 x 2, Mk-82 x 6, CBU-87 x 3, TGP, NVP", + "roles": [ + "CAS" + ] + }, + { + "items": [ + { + "name": "AIM-9M Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Fuel tank 610 gal", + "quantity": 2 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", + "name": "AIM-9M x 4, TGP, NVP, Fuel Tanks x 2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Captive AIM-9M for ACM", + "quantity": 3 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + }, + { + "name": "AN/AAQ-14 LANTIRN TGT Pod", + "quantity": 1 + }, + { + "name": "AN/AAQ-13 LANTIRN NAV POD", + "quantity": 1 + } + ], + "enabled": true, + "code": "CATM-9M x 3, AIM-120B", + "name": "CATM-9M x 3, AIM-120B", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "Captive AIM-9M for ACM", + "quantity": 1 + }, + { + "name": "", + "quantity": 1 + }, + { + "name": "AIM-120C-5 AMRAAM - Active Rdr AAM", + "quantity": 1 + } + ], + "enabled": true, + "code": "CATM-9M, CAIM-120", + "name": "CATM-9M, CAIM-120", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 3 + } + ], + "enabled": true, + "code": "Clean", + "name": "Clean", + "roles": [] + }, + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Strike" + ] + } + ], + "filename": "f-15.png", + "liveries": { + "usaf 334th eagles fs af89 aim high": { + "name": "USAF 334th Eagles AF89-475 'Aim High'", + "countries": [ + "USA" + ] + }, + "usaf 335th chiefs fs af89 low vis combat": { + "name": "USAF 335th Chiefs AF89 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af91 low vis combat": { + "name": "USAF 492nd Madhatters AF91 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 335th chiefs fs af89 high vis clean": { + "name": "USAF 335th Chiefs AF89 High Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 335th chiefs fs af89-0487 lucky": { + "name": "USAF 335th Chiefs AF89-0487 'Lucky'", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af88-1690 darkness falls": { + "name": "USAF 336th Rocketeers AF88-1690 'Darkness Falls'", + "countries": [ + "USA" + ] + }, + "usaf 391st bold tigers fs af92-366 billy the kid": { + "name": "USAF 391st Bold Tigers AF92-366 'Billy the Kid'", + "countries": [ + "USA" + ] + }, + "idf ra'am, 69 hammer sqn": { + "name": "IDF 69th Hammers Scheme B", + "countries": [ + "ISR" + ] + }, + "usaf 336th rocketeers fs af89 high vis clean": { + "name": "USAF 336th Rocketeers AF89 High Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af89-496 shadow": { + "name": "USAF 336th Rocketeers AF89-496 'Shadow'", + "countries": [ + "USA" + ] + }, + "usaf 389th thunderbolts fs af90 low vis combat": { + "name": "USAF 389th Thunderbolts AF90 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 492nd mad hatters fs 97-219 75th d-day anniversary": { + "name": "USAF 492nd Madhatters AF97-219 '75th Anniversary D-Day'", + "countries": [ + "USA" + ] + }, + "usaf 334th eagles fs af89 high vis clean": { + "name": "USAF 334th Eagles AF89 High Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 391st bold tigers fs af91-300 leo": { + "name": "USAF 391st Bold Tigers AF91-300 'Leo'", + "countries": [ + "USA" + ] + }, + "usaf 494th panthers fs af01 low vis clean": { + "name": "USAF 494th Panthers AF01 Low Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af97-220 thanos": { + "name": "USAF 492nd Madhatters AF97-220 'Thanos'", + "countries": [ + "USA" + ] + }, + "usaf 48th fw 70th anniversary af92-364 heritage": { + "name": "USAF 48th FW 70th Aniversary AF92-364 Heritage", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af88 low vis combat": { + "name": "USAF 336th Rocketeers AF88 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af97-221 low vis combat": { + "name": "USAF 492nd Madhatters AF97-221 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af91-315 vader": { + "name": "USAF 492nd Madhatters AF91-315 'Vader'", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af91-327 green goblin": { + "name": "USAF 492nd Madhatters AF91-327 'Green Goblin'", + "countries": [ + "USA" + ] + }, + "usaf 391st bold tigers fs af90-247 kraken": { + "name": "USAF 391st Bold Tigers AF90-247 'kraken'", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af88-1700 dragon betty": { + "name": "USAF 336th Rocketeers AF88-1700 'Dragon Betty'", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af89-501": { + "name": "USAF 336th Rocketeers AF89-501", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af88 high vis clean": { + "name": "USAF 336th Rocketeers AF88 High Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 333rd rocketeers fs af87-199 333 fgs": { + "name": "USAF 333rd Lancers AF87-0199 333 FGS", + "countries": [ + "USA" + ] + }, + "usaf 391st bold tigers fs af90-241 high vis combat": { + "name": "USAF 391st Bold Tigers AF90-241 High Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af96 low vis clean": { + "name": "USAF 492nd Madhatters AF96 Low Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 494th panthers fs af00 low vis combat": { + "name": "USAF 494th Panthers AF00 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af91 low vis clean": { + "name": "USAF 492nd Madhatters AF91 Low Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 494th panthers fs af01 low vis combat": { + "name": "USAF 494th Panthers AF01 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af98 low vis clean": { + "name": "USAF 492nd Madhatters AF98 Low Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 17th ws af90 low vis clean": { + "name": "USAF 17th Weapons Squadron AF90 Low Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af88-1673 336 fgs": { + "name": "USAF 336th Rocketeers AF88-1673 336 FGS", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af89 low vis combat": { + "name": "USAF 336th Rocketeers AF89 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af91-308 low vis clean": { + "name": "USAF 492nd Madhatters AF91-308 Low Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af98 low vis combat": { + "name": "USAF 492nd Madhatters AF98 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 391st bold tigers af90-250 tmota": { + "name": "USAF 391ST Bold Tigers 2005 Tiger Meet of the Americas", + "countries": [ + "USA" + ] + }, + "usaf af86-183 number1": { + "name": "USAF Test AF86-183 'Number 1'", + "countries": [ + "USA" + ] + }, + "usaf 17th wps af90-257": { + "name": "USAF 17th Weapons Squadron AF90-257 High Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 17th ws af90 high vis clean": { + "name": "USAF 17th Weapons Squadron AF90 High Vis Clean", + "countries": [ + "USA" + ] + }, + "usaf 492nd madhatters fs af96 low vis combat": { + "name": "USAF 492nd Madhatters AF96 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 391st bold tigers fs af90 low vis combat": { + "name": "USAF 391st Bold Tigers AF90 Low Vis Combat", + "countries": [ + "USA" + ] + }, + "usaf 494th panthers fs 91-603 75th d-day anniversary": { + "name": "USAF 494th Panthers AF91-603 '75th Anniversary D-Day'", + "countries": [ + "USA" + ] + }, + "usaf 336th fw mountain home 75 years af87-173": { + "name": "USAF 366th FW 'Mountain Home 75 Years' AF87-0173", + "countries": [ + "USA" + ] + }, + "usaf 336th rocketeers fs af88-1687 mad duck iv": { + "name": "USAF 336th Rocketeers AF88-1687 'Mad Duck IV'", + "countries": [ + "USA" + ] + } + } + }, + "F-14A": { + "name": "F-14A", + "coalition": "", + "era": "", + "label": "F-14A Tomcat", + "shortLabel": "F14", + "type": "F_14A", + "enabled": false, + "liveries": {} + }, + "Su-25TM": { + "name": "Su-25TM", + "coalition": "", + "era": "", + "label": "SU-25TM", + "shortLabel": "S25", + "type": "Su_25TM", + "enabled": false, + "liveries": {} + }, + "Su-24MR": { + "name": "Su-24MR", + "coalition": "", + "era": "", + "label": "Su-24MR Fencer", + "shortLabel": "S24", + "type": "Su_24MR", + "enabled": false, + "liveries": {} + }, + "S-3B": { + "name": "S-3B", + "coalition": "", + "era": "", + "label": "S-3B", + "shortLabel": "S3B", + "type": "S_3B", + "enabled": false, + "liveries": {} + }, + "Mirage 2000-5": { + "name": "Mirage 2000-5", + "coalition": "", + "era": "", + "label": "MIRAGE 2000-5", + "shortLabel": "M2k", + "type": "Mirage_2000_5", + "enabled": false, + "liveries": {} + }, + "F-15E": { + "name": "F-15E", + "coalition": "", + "era": "", + "label": "F-15E Strike Eagle", + "shortLabel": "15E", + "type": "F_15E", + "enabled": false, + "liveries": {} + }, + "MiG-29G": { + "name": "MiG-29G", + "coalition": "", + "era": "", + "label": "MiG-29G Fulcrum", + "shortLabel": "M29", + "type": "MiG_29G", + "enabled": false, + "liveries": {} + }, + "F-16C bl.50": { + "name": "F-16C bl.50", + "coalition": "", + "era": "", + "label": "F-16C Viper Block 50", + "shortLabel": "16C", + "type": "F_16C_bl_50", + "enabled": false, + "liveries": {} + }, + "F-16C bl.52d": { + "name": "F-16C bl.52d", + "coalition": "", + "era": "", + "label": "F-16C BL.52D", + "shortLabel": "16C", + "type": "F_16C_bl_52d", + "enabled": false, + "liveries": {} + }, + "F-16A": { + "name": "F-16A", + "coalition": "", + "era": "", + "label": "F-16A Viper", + "shortLabel": "16A", + "type": "F_16A", + "enabled": false, + "liveries": {} + }, + "F-16A MLU": { + "name": "F-16A MLU", + "coalition": "", + "era": "", + "label": "F-16A Viper MLU", + "shortLabel": "16A", + "type": "F_16A_MLU", + "enabled": false, + "liveries": {} + }, + "RQ-1A Predator": { + "name": "RQ-1A Predator", + "coalition": "", + "era": "", + "label": "RQ-1A PREDATOR", + "shortLabel": "RQ1", + "type": "RQ_1A_Predator", + "enabled": false, + "liveries": {} + }, + "Yak-40": { + "name": "Yak-40", + "coalition": "", + "era": "", + "label": "YAK-40", + "shortLabel": "40", + "type": "Yak_40", + "enabled": false, + "liveries": {} + }, + "SpitfireLFMkIX": { + "name": "SpitfireLFMkIX", + "coalition": "blue", + "era": "WW2", + "label": "Spitfire Mk 9", + "shortLabel": "Spit", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "Torpedo Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel Tank (Torpedo)", + "name": "Fuel Tank (Torpedo)", + "roles": [ + "CAP", + "FAC-A", + "Escort" + ] + }, + { + "items": [ + { + "name": "Slipper Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel Tank (Slipper)", + "name": "Fuel Tank (Slipper)", + "roles": [ + "CAP", + "FAC-A", + "Escort" + ] + }, + { + "items": [ + { + "name": "GP 250", + "quantity": 2 + } + ], + "enabled": true, + "code": "GP 250", + "name": "GP 250", + "roles": [ + "Runway Attack", + "CAS", + "Antiship Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GP 500", + "quantity": 1 + } + ], + "enabled": true, + "code": "GO 500", + "name": "GP 500", + "roles": [ + "Runway Attack", + "CAS", + "Antiship Strike", + "Strike" + ] + } + ], + "type": "SpitfireLFMkIX", + "enabled": true, + "liveries": { + "441 9g-q": { + "name": "441 RCAF 9G-Q", + "countries": [ + "CAN", + "UK" + ] + }, + "ussr 26th gviap, pvo": { + "name": "USSR 26th GvIAP, PVO", + "countries": [ + "RUS", + "SUN" + ] + }, + "raf standard": { + "name": "RAF standard", + "countries": [ + "UK" + ] + }, + "ussr_3rd_ae_57th_gviap": { + "name": "USSR 3rd AE, 57th GvIAP", + "countries": [ + "RUS", + "SUN" + ] + }, + "raf 2 taf, sept 1944": { + "name": "RAF, 2nd Tactical Air Force, September 1944", + "countries": [ + "UK" + ] + }, + "ussr spitfire 57th gviap": { + "name": "USSR 57th GvIAP", + "countries": [ + "RUS", + "SUN" + ] + }, + "raf 2 taf, july 1944": { + "name": "RAF, 2nd Tactical Air Force, July 1944", + "countries": [ + "UK" + ] + }, + "raf, no. 16 squadron": { + "name": "RAF, No.16 Squadron", + "countries": [ + "UK" + ] + }, + "ussr pilot lt. col. v. a. matsiyevitch, 26th gviap": { + "name": "USSR Lt.Col. V.A. Matsiyevitch, 26th GvIAP", + "countries": [ + "RUS", + "SUN" + ] + }, + "raf, no. 126 squadron, harrowbeer": { + "name": "RAF, No.126 Squadron", + "countries": [ + "UK" + ] + }, + "raf 2 taf, june 1944": { + "name": "RAF, 2nd Tactical Air Force, June 1944", + "countries": [ + "UK" + ] + }, + "403 rcaf beurling": { + "name": "403 RCAF Beurling", + "countries": [ + "CAN", + "UK" + ] + }, + "raf, no. 145 squadron": { + "name": "RAF, No.145 Squadron", + "countries": [ + "UK" + ] + } + }, + "filename": "spitfire.png", + "description": "Single propellor, straight wing, 1 crew. Spitfire." + }, + "SpitfireLFMkIXCW": { + "name": "SpitfireLFMkIXCW", + "coalition": "blue", + "era": "WW2", + "label": "Spitfire Mk 9 CW", + "shortLabel": "Spit", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "Torpedo Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel Tank (Torpedo)", + "name": "Fuel Tank (Torpedo)", + "roles": [ + "CAP", + "FAC-A", + "Escort" + ] + }, + { + "items": [ + { + "name": "Slipper Fuel Tank", + "quantity": 1 + } + ], + "enabled": true, + "code": "Fuel Tank (Slipper)", + "name": "Fuel Tank (Slipper)", + "roles": [ + "CAP", + "FAC-A", + "Escort" + ] + }, + { + "items": [ + { + "name": "GP 250", + "quantity": 2 + } + ], + "enabled": true, + "code": "GP 250", + "name": "GP 250", + "roles": [ + "Runway Attack", + "CAS", + "Antiship Strike", + "Strike" + ] + }, + { + "items": [ + { + "name": "GP 500", + "quantity": 1 + } + ], + "enabled": true, + "code": "GO 500", + "name": "GP 500", + "roles": [ + "Runway Attack", + "CAS", + "Antiship Strike", + "Strike" + ] + } + ], + "type": "SpitfireLFMkIXCW", + "enabled": true, + "liveries": { + "441 9g-q": { + "name": "441 RCAF 9G-Q", + "countries": [ + "CAN", + "UK" + ] + }, + "ussr 26th gviap, pvo": { + "name": "USSR 26th GvIAP, PVO", + "countries": [ + "RUS", + "SUN" + ] + }, + "raf standard": { + "name": "RAF standard", + "countries": [ + "UK" + ] + }, + "ussr_3rd_ae_57th_gviap": { + "name": "USSR 3rd AE, 57th GvIAP", + "countries": [ + "RUS", + "SUN" + ] + }, + "raf 2 taf, sept 1944": { + "name": "RAF, 2nd Tactical Air Force, September 1944", + "countries": [ + "UK" + ] + }, + "ussr spitfire 57th gviap": { + "name": "USSR 57th GvIAP", + "countries": [ + "RUS", + "SUN" + ] + }, + "raf 2 taf, july 1944": { + "name": "RAF, 2nd Tactical Air Force, July 1944", + "countries": [ + "UK" + ] + }, + "raf, no. 16 squadron": { + "name": "RAF, No.16 Squadron", + "countries": [ + "UK" + ] + }, + "ussr pilot lt. col. v. a. matsiyevitch, 26th gviap": { + "name": "USSR Lt.Col. V.A. Matsiyevitch, 26th GvIAP", + "countries": [ + "RUS", + "SUN" + ] + }, + "raf, no. 126 squadron, harrowbeer": { + "name": "RAF, No.126 Squadron", + "countries": [ + "UK" + ] + }, + "raf 2 taf, june 1944": { + "name": "RAF, 2nd Tactical Air Force, June 1944", + "countries": [ + "UK" + ] + }, + "403 rcaf beurling": { + "name": "403 RCAF Beurling", + "countries": [ + "CAN", + "UK" + ] + }, + "raf, no. 145 squadron": { + "name": "RAF, No.145 Squadron", + "countries": [ + "UK" + ] + } + }, + "filename": "spitfire.png", + "description": "Single propellor, straight wing, 1 crew. Spitfire with clipped wingtips.." + }, + "P-51D": { + "name": "P-51D", + "coalition": "", + "era": "", + "label": "P-51D Mustang", + "shortLabel": "P51", + "type": "P_51D", + "enabled": false, + "liveries": {} + }, + "P-47D-30": { + "name": "P-47D-30", + "coalition": "", + "era": "", + "label": "P-47D-30", + "shortLabel": "P47", + "type": "P_47D_30", + "enabled": false, + "liveries": {} + }, + "P-47D-30bl1": { + "name": "P-47D-30bl1", + "coalition": "", + "era": "", + "label": "P-47D-30", + "shortLabel": "P47", + "type": "P_47D_30bl1", + "enabled": false, + "liveries": {} + }, + "A-10A": { + "name": "A-10A", + "coalition": "", + "era": "", + "label": "A-10A Warthog", + "shortLabel": "A10", + "type": "A_10A", + "enabled": false, + "liveries": {} + }, + "A-10C": { + "name": "A-10C", + "coalition": "", + "era": "", + "label": "A-10C Warthog", + "shortLabel": "A10", + "type": "A_10C", + "enabled": false, + "liveries": {} + }, + "KC130": { + "name": "KC130", + "coalition": "blue", + "label": "KC-130", + "era": "Early Cold War", + "shortLabel": "K130", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Tanker" + ] + } + ], + "filename": "c-130.png", + "enabled": true, + "liveries": {}, + "type": "Aircraft", + "description": "4 turboprop, stright wing, 3 crew. Tanker/transport aircraft. Hercules", + "abilities": "Tanker, Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, + "C-101EB": { + "name": "C-101EB", + "coalition": "", + "era": "", + "label": "C-101EB", + "shortLabel": "C-101EB", + "type": "C_101EB", + "enabled": false, + "liveries": {} + }, + "WingLoong-I": { + "name": "WingLoong-I", + "coalition": "", + "era": "", + "label": "MQ-9 Reaper", + "shortLabel": "MQ9", + "type": "WingLoong_I", + "enabled": false, + "liveries": {} + }, + "Christen Eagle II": { + "name": "Christen Eagle II", + "coalition": "", + "era": "", + "label": "CHRISTEN EAGLE II", + "shortLabel": "CE2", + "type": "Christen_Eagle_II", + "enabled": false, + "liveries": {} + }, + "F-5E": { + "name": "F-5E", + "coalition": "", + "era": "", + "label": "F-5E", + "shortLabel": "5E", + "type": "F_5E", + "enabled": false, + "liveries": {} + }, + "F/A-18A": { + "name": "F/A-18A", + "coalition": "", + "era": "", + "label": "F/A-18A", + "shortLabel": "18A", + "type": "F_A_18A", + "enabled": false, + "liveries": {} + }, + "F/A-18C": { + "name": "F/A-18C", + "coalition": "", + "era": "", + "label": "F/A-18C", + "shortLabel": "18C", + "type": "F_A_18C", + "enabled": false, + "liveries": {} + }, + "Hawk": { + "name": "Hawk", + "coalition": "", + "era": "", + "label": "Hawk", + "shortLabel": "Hk", + "type": "Hawk", + "enabled": false, + "liveries": {} + }, + "L-39C": { + "name": "L-39C", + "coalition": "", + "era": "", + "label": "L-39C", + "shortLabel": "L39C", + "type": "L_39C", + "enabled": false, + "liveries": {} + }, + "MB-339APAN": { + "name": "MB-339APAN", + "coalition": "", + "era": "", + "label": "MB-339APAN", + "shortLabel": "339", + "type": "MB_339APAN", + "enabled": false, + "liveries": {} + }, + "Mirage-F1C": { + "name": "Mirage-F1C", + "coalition": "", + "era": "", + "label": "MIRAGE-F1C", + "shortLabel": "MF1", + "type": "Mirage_F1C", + "enabled": false, + "liveries": {} + }, + "Mirage-F1CE": { + "name": "Mirage-F1CE", + "coalition": "", + "era": "", + "label": "MIRAGE-F1CE", + "shortLabel": "MF1", + "type": "Mirage_F1CE", + "enabled": false, + "liveries": {} + }, + "Mirage-F1M-EE": { + "name": "Mirage-F1M-EE", + "coalition": "", + "era": "", + "label": "MIRAGE-F1M-EE", + "shortLabel": "MF1", + "type": "Mirage_F1M_EE", + "enabled": false, + "liveries": {} + }, + "Mirage-F1M-CE": { + "name": "Mirage-F1M-CE", + "coalition": "", + "era": "", + "label": "MIRAGE-F1M-CE", + "shortLabel": "MF1", + "type": "Mirage_F1M_CE", + "enabled": false, + "liveries": {} + }, + "Mirage-F1C-200": { + "name": "Mirage-F1C-200", + "coalition": "", + "era": "", + "label": "MIRAGE-F1C-200", + "shortLabel": "MF1", + "type": "Mirage_F1C_200", + "enabled": false, + "liveries": {} + }, + "Mirage-F1EH": { + "name": "Mirage-F1EH", + "coalition": "", + "era": "", + "label": "MIRAGE-F1EH", + "shortLabel": "MF1", + "type": "Mirage_F1EH", + "enabled": false, + "liveries": {} + }, + "Mirage-F1CH": { + "name": "Mirage-F1CH", + "coalition": "", + "era": "", + "label": "MIRAGE-F1CH", + "shortLabel": "MF1", + "type": "Mirage_F1CH", + "enabled": false, + "liveries": {} + }, + "Mirage-F1JA": { + "name": "Mirage-F1JA", + "coalition": "", + "era": "", + "label": "MIRAGE-F1JA", + "shortLabel": "MF1", + "type": "Mirage_F1JA", + "enabled": false, + "liveries": {} + }, + "Mirage-F1CG": { + "name": "Mirage-F1CG", + "coalition": "", + "era": "", + "label": "MIRAGE-F1CG", + "shortLabel": "MF1", + "type": "Mirage_F1CG", + "enabled": false, + "liveries": {} + }, + "Mirage-F1CZ": { + "name": "Mirage-F1CZ", + "coalition": "", + "era": "", + "label": "MIRAGE-F1CZ", + "shortLabel": "MF1", + "type": "Mirage_F1CZ", + "enabled": false, + "liveries": {} + }, + "Mirage-F1CJ": { + "name": "Mirage-F1CJ", + "coalition": "", + "era": "", + "label": "MIRAGE-F1CJ", + "shortLabel": "MF1", + "type": "Mirage_F1CJ", + "enabled": false, + "liveries": {} + }, + "Mirage-F1CK": { + "name": "Mirage-F1CK", + "coalition": "", + "era": "", + "label": "MIRAGE-F1CK", + "shortLabel": "MF1", + "type": "Mirage_F1CK", + "enabled": false, + "liveries": {} + }, + "Mirage-F1EQ": { + "name": "Mirage-F1EQ", + "coalition": "", + "era": "", + "label": "MIRAGE-F1EQ", + "shortLabel": "MF1", + "type": "Mirage_F1EQ", + "enabled": false, + "liveries": {} + }, + "Mirage-F1ED": { + "name": "Mirage-F1ED", + "coalition": "", + "era": "", + "label": "MIRAGE-F1ED", + "shortLabel": "MF1", + "type": "Mirage_F1ED", + "enabled": false, + "liveries": {} + }, + "Mirage-F1EDA": { + "name": "Mirage-F1EDA", + "coalition": "", + "era": "", + "label": "MIRAGE-F1EDA", + "shortLabel": "MF1", + "type": "Mirage_F1EDA", + "enabled": false, + "liveries": {} + }, + "Mirage-F1CR": { + "name": "Mirage-F1CR", + "coalition": "", + "era": "", + "label": "MIRAGE-F1CR", + "shortLabel": "MF1", + "type": "Mirage_F1CR", + "enabled": false, + "liveries": {} + }, + "Mirage-F1CT": { + "name": "Mirage-F1CT", + "coalition": "", + "era": "", + "label": "MIRAGE-F1CT", + "shortLabel": "MF1", + "type": "Mirage_F1CT", + "enabled": false, + "liveries": {} + }, + "Mirage-F1B": { + "name": "Mirage-F1B", + "coalition": "", + "era": "", + "label": "MIRAGE-F1B", + "shortLabel": "MF1", + "type": "Mirage_F1B", + "enabled": false, + "liveries": {} + }, + "Mirage-F1BE": { + "name": "Mirage-F1BE", + "coalition": "", + "era": "", + "label": "MIRAGE-F1BE", + "shortLabel": "MF1", + "type": "Mirage_F1BE", + "enabled": false, + "liveries": {} + }, + "Mirage-F1BQ": { + "name": "Mirage-F1BQ", + "coalition": "", + "era": "", + "label": "MIRAGE-F1BQ", + "shortLabel": "MF1", + "type": "Mirage_F1BQ", + "enabled": false, + "liveries": {} + }, + "Mirage-F1BD": { + "name": "Mirage-F1BD", + "coalition": "", + "era": "", + "label": "MIRAGE-F1BD", + "shortLabel": "MF1", + "type": "Mirage_F1BD", + "enabled": false, + "liveries": {} + }, + "Mirage-F1DDA": { + "name": "Mirage-F1DDA", + "coalition": "", + "era": "", + "label": "MIRAGE-F1DDA", + "shortLabel": "MF1", + "type": "Mirage_F1DDA", + "enabled": false, + "liveries": {} + }, + "Yak-52": { + "name": "Yak-52", + "coalition": "", + "era": "", + "label": "YAK-52", + "shortLabel": "52", + "type": "Yak_52", + "enabled": false, + "liveries": {} + }, + "B-17G": { + "name": "B-17G", + "coalition": "", + "era": "", + "label": "B-17G Flying Fortress", + "shortLabel": "B17", + "type": "B_17G", + "enabled": false, + "liveries": {} + }, + "Ju-88A4": { + "name": "Ju-88A4", + "coalition": "", + "era": "", + "label": "JU-88 A4", + "shortLabel": "Ju88", + "type": "Ju_88A4", + "enabled": false, + "liveries": {} + }, + "C-47": { + "name": "C-47", + "coalition": "", + "era": "", + "label": "C-47 Dakota", + "shortLabel": "C47", + "type": "C_47", + "enabled": false, + "liveries": {} + }, + "TF-51D": { + "name": "TF-51D", + "coalition": "", + "era": "", + "label": "TF-51D", + "shortLabel": "T51", + "type": "TF_51D", + "enabled": false, + "liveries": {} + }, + "F-4E-45MC": { + "name": "F-4E-45MC", + "coalition": "", + "era": "", + "label": "F-4E-45MC", + "shortLabel": "4", + "type": "F_4E_45MC", + "enabled": true, + "liveries": { + "sl68-303_h1_110ang": { + "name": "F-4E - USAF - SL68-303 - Hill One - 110th Missouri ANG by LanceCriminal86", + "countries": "All" + }, + "tuaf-68-0342-h2": { + "name": "F-4E - TuAF - 68-0342 - Hill Two by Aqil", + "countries": "All" + }, + "jasdf-57-8368": { + "name": "F-4EJ - JASDF - 57-8368 by Mach3DS", + "countries": "All" + }, + "thunderbird4": { + "name": "F-4E - USAF - THUNDERBIRD 4", + "countries": "All" + }, + "default": { + "name": "F-4E - USAF - GA68-400 - Hill Two - 20th TFTS Silver Lobos", + "countries": "All" + }, + "iriaf-3-6673": { + "name": "F-4E - IRIAF - 3-6673 - 91st TFS - 9th TFB by ISAAC", + "countries": "All" + }, + "38+59_n90_jg71": { + "name": "F-4F - 38+59 - Norm 90 - JG 71 Richthofen", + "countries": "All" + }, + "haf-generic-ag": { + "name": "F-4E - HAF - Generic - Aegean Ghost", + "countries": "All" + }, + "wa68-373_sea_57ttw": { + "name": "F-4E - USAF - WA68-373 - SEA - 57th Tactical Training Wing", + "countries": "All" + }, + "iriaf-3-6564": { + "name": "F-4E - IRIAF - 3-6564 - 31st TFS by ISAAC", + "countries": "All" + }, + "tuaf-67-0268-h2": { + "name": "F-4E - TuAF - 67-0268 - Hill Two by Aqil", + "countries": "All" + }, + "iriaf-3-6643": { + "name": "F-4E - IRIAF - 3-6643 - 61st TFS by ISAAC", + "countries": "All" + }, + "thunderbird2": { + "name": "F-4E - USAF - THUNDERBIRD 2", + "countries": "All" + }, + "haf-01520_ab": { + "name": "F-4E - HAF - 01520 - Aegean Blue by Fish", + "countries": "All" + }, + "eaf-70355_h2": { + "name": "F-4E - EAF - 70355 - Hill Two by Kerbo", + "countries": "All" + }, + "iaf-kurnass-114-119sqn": { + "name": "F-4E - IAF - Kurnass 114 - 119 SQN", + "countries": "All" + }, + "37+36_n72_jg74": { + "name": "F-4F - 37+36 - Norm 72 - JG 74 - Moelders", + "countries": "All" + }, + "eaf-60366_ghost": { + "name": "F-4E - EAF - 60366 - Ghost Grey by Kerbo", + "countries": "All" + }, + "th68-450_h1_457fs": { + "name": "F-4E - USAF - TH68-450 - Hill Two - 457th FS Spads", + "countries": "All" + }, + "jv67-288_seaw_469tfs": { + "name": "F-4E - USAF - JV70-288 - SEA - 469th TFS Tigers", + "countries": "All" + }, + "37+24_n81b_jg72": { + "name": "F-4F - 37+24 - Norm 81 B - JG 72 Westphalen", + "countries": "All" + }, + "eaf-70373_seaw": { + "name": "F-4E - EAF - 70373 - SEA by Kerbo", + "countries": "All" + }, + "rokaf-68377-h2-156fs": { + "name": "F-4E - ROKAF - 68-377 - Hill Two - 156th FS", + "countries": "All" + }, + "raaf-97203_sea": { + "name": "F-4E - RAAF - 97203 - SEA", + "countries": "All" + }, + "jasdf-57-6371": { + "name": "RF-4EJ - JASDF - 57-6371 - SEA by Kerbo", + "countries": "All" + }, + "rs68-381_e1_526tfs": { + "name": "F-4E - USAF - RS68-381 - Euro One - 526th TFS", + "countries": "All" + }, + "adc af66-382": { + "name": "F-4E - USAF - AF66-382 - ADC - 57th FIS by Mach3DS", + "countries": "All" + }, + "thunderbird7": { + "name": "F-4E - USAF - THUNDERBIRD 7", + "countries": "All" + }, + "rokaf-80407-h2-152fs": { + "name": "F-4E - ROKAF - 80407 - Hill Two - 152nd FS", + "countries": "All" + }, + "iiaf-3-6687": { + "name": "F-4E - IIAF - 3-6687 by ISAAC", + "countries": "All" + }, + "raf-43-sqn-fg.1": { + "name": "Fictional Royal Air Force 43(F) Sqn FG.1 by Fish", + "countries": "All" + }, + "rs68-480_sea_512tfs": { + "name": "F-4E - USAF - RS68-480 - SEA Wrap Around - 512th TFS Dragons", + "countries": "All" + }, + "jv67-287_seaw_469tfs": { + "name": "F-4E - USAF - JV70-287 - SEA - 469th TFS Tigers", + "countries": "All" + }, + "tuaf-66-0312_h2_karasahin": { + "name": "F-4E - TuAF - 66-0312 - Hill Two - Kara Sahin (Black Hawk) by Aqil", + "countries": "All" + }, + "haf-71752_seaw": { + "name": "F-4E - HAF - 71752 - SEAW", + "countries": "All" + }, + "tuaf-67-0285-sea": { + "name": "F-4E - TuAF - 67-0285 - SEA by Aqil", + "countries": "All" + }, + "37+83_n81a_jg74": { + "name": "F-4F - 37+83 - Norm 81 A - JG 74 Moelders - GAFTIC 1986", + "countries": "All" + }, + "haf-01507_ag": { + "name": "F-4E - HAF - 01507 - Aegean Ghost", + "countries": "All" + }, + "37+01_pp_jg71": { + "name": "F-4F - 37+01 - Phantom Pharewell - JG71 - 2013", + "countries": "All" + }, + "adc af66-300": { + "name": "F-4E - USAF - AF66-300 - ADC - 57th FIS by Mach3DS", + "countries": "All" + }, + "rokaf-80470-cg-153fs": { + "name": "F-4E - ROKAF - 78740 - Compass Ghost - 153rd FS", + "countries": "All" + }, + "iiaf-usaf": { + "name": "F-4E - IIAF - USAF - 00252 - Asia Minor by ISAAC", + "countries": "All" + }, + "jasdf-77-8399": { + "name": "F-4EJ - JASDF - 77-8399 - Final Year Black by Mach3DS", + "countries": "All" + }, + "tuaf-69-7585-h2-son_seytanlar": { + "name": "F-4E - TuAF - 69-7585 - Hill Two - Son Seytanlar by Aqil", + "countries": "All" + }, + "jasdf-87-8312-3wg-blackpanthers50th": { + "name": "F-4EJ - JASDF - 87-8312 - 3WG 50th Anniversary by Fish", + "countries": "All" + }, + "rs68-517_sea_526tfs": { + "name": "F-4E - USAF - RS68-517 - SEA Wrap Around - 526th TFS", + "countries": "All" + }, + "thunderbird3": { + "name": "F-4E - USAF - THUNDERBIRD 3", + "countries": "All" + }, + "ca68-426_h2_163tfg": { + "name": "F-4E - USAF - CA68-426 - Hill Two - 163rd TFG", + "countries": "All" + }, + "iaf-kurnass-175-69sqn": { + "name": "F-4E - IAF - Kurnass 175 - 69 SQN", + "countries": "All" + }, + "37+45_n90_jg74": { + "name": "F-4F - 37+45 - Norm 90 - JG 74 Moelders", + "countries": "All" + }, + "ca69-382_h2_163tfg": { + "name": "F-4E - USAF - CA69-382 - Hill Two - 163rd TFG", + "countries": "All" + }, + "jasdf-87-8312-3wg": { + "name": "F-4EJ - JASDF - 87-8312 - 3WG by Fish", + "countries": "All" + }, + "thunderbird6": { + "name": "F-4E - USAF - THUNDERBIRD 6", + "countries": "All" + }, + "jasdf-57-8367-301st": { + "name": "F-4EJ - JASDF - 57-8367 - Grey - 301st", + "countries": "All" + }, + "jasdf-67-8380": { + "name": "F-4EJ - JASDF - 67-8380 by Mach3DS", + "countries": "All" + }, + "nj68-357_h1_141tfs": { + "name": "F-4E - USAF - NJ68-357 - Hill Two - 141st TFS Tigers", + "countries": "All" + }, + "os68-349_seaw_36tfs": { + "name": "F-4E - USAF - OS68-349 - SEA - 36th TFS The Flying Fiends", + "countries": "All" + }, + "jasdf-07-8428": { + "name": "F-4EJ - JASDF - 07-8428 - Final Year White by Mach3DS", + "countries": "All" + }, + "tuaf-77-0288-h2-70thnato": { + "name": "F-4E - TuAF - 77-0288 - Hill Two - NATO 70th by Fish", + "countries": "All" + }, + "wa66-376_e1_57ttw": { + "name": "F-4E - USAF - WA66-376 - Euro One - 57th Tactical Training Wing", + "countries": "All" + }, + "jasdf-87-8409-adtw-gifuab2017": { + "name": "F-4EJ - JASDF - 87-8409 - ADTW 2017 Digtial Green by Fish", + "countries": "All" + }, + "thunderbird1": { + "name": "F-4E - USAF - THUNDERBIRD 1", + "countries": "All" + }, + "38+13_pp_wtd61": { + "name": "F-4F - 38+13 - Phantom Pharewell - WTD61 - 2013", + "countries": "All" + }, + "rokaf-80728-h2-153fs": { + "name": "F-4E - ROKAF - 78728 - Hill Two - 153rd FS", + "countries": "All" + }, + "37+49_n81a_jg73": { + "name": "F-4F - 37+49 - Norm 81 A - JaboG 35 - GAFTIC 1985", + "countries": "All" + }, + "my68-328_e1_68fs": { + "name": "F-4E - USAF - MY68-328 - Euro One - 68th FS Lightning Lancers", + "countries": "All" + }, + "tuaf-77-1053-h2_korsanlar": { + "name": "F-4E - TuAF - 77-1053 - Hill Two - Korsanlar by Aqil", + "countries": "All" + }, + "thunderbird5": { + "name": "F-4E - USAF - THUNDERBIRD 5", + "countries": "All" + }, + "38+10_n72_jg71": { + "name": "F-4F - 38+10 - Norm 72 - JG 71 - 2013", + "countries": "All" + } + }, + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "2x Mk-83 - 1000lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (MER) Ripple", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-83*4, Mk-83*3 (Ripple), Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-83*4, Mk-83*3 (Ripple), Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "3x AGM-65A - Maverick A (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65A*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65A*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD: AGM-45A*4, Aim-7E2*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD: AGM-45A*4, Aim-7E2*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*6, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*6, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (TER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*2, LAU-68 7x .75, M156 WP*2, Aim-7E2*3, Aim-9P*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*2, LAU-68 7x .75, M156 WP*2, Aim-7E2*3, Aim-9P*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9M*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9M*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "{HB_F4E_WALLEYE_I}", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-62 Walleye I*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-62 Walleye I*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "SEAD + GUIDED: AGM-45A*2, GBU-12*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + GUIDED: AGM-45A*2, GBU-12*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-65A - Maverick A (TV Guided) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-65A*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-65A*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65B - Maverick B (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65B*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65B*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-12*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 Snakeye - 500lb GP Bomb HD (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 Snakeye*24, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-82 Snakeye*24, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*6, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-12*6, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9L*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65A - Maverick A (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65A*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65A*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + ROCKETS: SUU-23*2, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*9, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "_GUNPOD + ROCKETS: SUU-23*2, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*9, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65B - Maverick B (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65B*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65B*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: Mk-20*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: Mk-20*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*3, LAU-68 7x 2.75 FFAR, MK-5 HEAT*6, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*3, LAU-68 7x 2.75 FFAR, MK-5 HEAT*6, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "1x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*9, LAU-68 7x 2.75 FFAR, MK-5 HEAT*2, Aim-7E2*4, AIM-9L*4, ALE-40 (30-60)*1", + "name": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*9, LAU-68 7x 2.75 FFAR, MK-5 HEAT*2, Aim-7E2*4, AIM-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A MEDIUM RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A MEDIUM RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 - 500lb GP Bomb LD (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "{2x Mk-82 SWA}", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "IRON: Mk-82 (LD)*18, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: Mk-82 (LD)*18, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-24*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-24*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-82 Snakeye - 500lb GP Bomb HD (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 Snakeye*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: Mk-82 Snakeye*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "SEAD: AGM-45A*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 370 Gal*2", + "name": "SEAD: AGM-45A*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 370 Gal*2", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "6x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (MER)", + "quantity": 1 + }, + { + "name": "3x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD: SUU-23*3, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "_GUNPOD: SUU-23*3, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 6 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye I - Guided Weapon Mk 1 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-10*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-10*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (MER)", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*5, SUU-23*2, Aim-7E2*4, ALE-40 (30-60)", + "name": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*5, SUU-23*2, Aim-7E2*4, ALE-40 (30-60)", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-87 - 202 x CEM Cluster Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*8, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-87*8, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "CBU-52B - 220 x HE/Frag bomblets", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*4, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-52B*4, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65D - Maverick D (IIR ASM) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65D*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65D*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-65D - Maverick D (IIR ASM) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-65D*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-65D*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-87*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-87 - 202 x CEM Cluster Bomb (TER)", + "quantity": 2 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*14, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-87*14, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "AIM-7M", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "A2A SHORT RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "A2A SHORT RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x AGM-65D - Maverick D (IIR ASM) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65D*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65D*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD: SUU-23*2, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD: SUU-23*2, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*15, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*15, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*7, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*7, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "AIM-7M", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A MEDIUM RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A MEDIUM RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A LONG RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A LONG RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Fuel Tank 370 GAL*2", + "name": "GUIDED: GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x M117 - 750lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x M117 - 750lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: M-117*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: M-117*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 - 500lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "{2x Mk-82 SWA}", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "IRON: Mk-82 (LD)*12, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: Mk-82 (LD)*12, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-65B - Maverick B (TV Guided) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-65B*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-65B*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 8 + } + ], + "enabled": true, + "code": "_Z_Clean", + "name": "_Z_Clean", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-10*2, GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-10*2, GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65D - Maverick D (IIR ASM) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65D*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65D*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "6x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (MER)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*6, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*6, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-52B*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "SUU-23", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + ROCKETS: SUU-23*1, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*4, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "_GUNPOD + ROCKETS: SUU-23*1, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*4, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-10*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-10*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A LONG RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A LONG RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A ECM: Aim-7E*3, Aim-9J*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A ECM: Aim-7E*3, Aim-9J*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A LONG RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A LONG RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9P*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9P*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-24*2, GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-24*2, GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (MER) Ripple", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-83*6, Mk-83*3 (Ripple), Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: Mk-83*6, Mk-83*3 (Ripple), Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*2, SUU-23*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*2, SUU-23*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: Mk-20*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: Mk-20*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "A2A SHORT RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "A2A SHORT RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + } + ], + "enabled": true, + "code": "IRON: Mk-84*3, Mk-82 (LD)*4, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-84*3, Mk-82 (LD)*4, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + IRON: SUU-23*2, Mk-82 (LD)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + IRON: SUU-23*2, Mk-82 (LD)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A MEDIUM RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A MEDIUM RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fl. Tank 370 GAL*2", + "name": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "M117 - 750lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x M117 - 750lb GP Bomb LD (TER)", + "quantity": 2 + } + ], + "enabled": true, + "code": "IRON: M-117*8, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: M-117*8, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 Snakeye - 500lb GP Bomb HD (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 Snakeye*18, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-82 Snakeye*18, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-10*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-10*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-12A Bullpup MCLOS ASM (LAU-34)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-12A Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-12A Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + ROCKETS: SUU-23*3, LAU-68 7x 2.75 FFAR, Mk-5 HEAT*6, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "_GUNPOD + ROCKETS: SUU-23*3, LAU-68 7x 2.75 FFAR, Mk-5 HEAT*6, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, GBU-8 HOBOS*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, GBU-8 HOBOS*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 3x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) AGM-65A - Maverick A (TV Guided) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65A*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65A*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-24*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-24*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + } + ], + "enabled": true, + "code": "IRON: Mk-84*2, Mk-82 (LD)*4, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: Mk-84*2, Mk-82 (LD)*4, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9Juli*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9Juli*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 8 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x M117 - 750lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: M-117*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: M-117*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9B*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9B*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-12B Bullpup MCLOS ASM (LAU-34)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-12B Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-12B Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AGM-62 Walleye I - Guided Weapon Mk 1 (TV Guided)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-62 Walleye I*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-62 Walleye I*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-84*2, Mk-82 (LD)*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: Mk-84*2, Mk-82 (LD)*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-12*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "Captive AIM-9M for ACM", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (Empty)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A TRAINING: Captive Aim-9M for ACM*2, ALQ-131 ECM*1, ALE-40 (empty)*1 ", + "name": "_A2A TRAINING: Captive Aim-9M for ACM*2, ALQ-131 ECM*1, ALE-40 (empty)*1 ", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-84*3, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-84*3, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "", + "quantity": 6 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 370 gallons*2", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 370 gallons*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*4, CBU-87*4, Aim-7E2*3, Aim-9L, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "GUIDED: GBU-12*4, CBU-87*4, Aim-7E2*3, Aim-9L, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "A2A SHORT RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "A2A SHORT RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (TER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*2, LAU-68 7x .75, M156 WP*2, Aim-7E2*3, Aim-9P*4, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*2, LAU-68 7x .75, M156 WP*2, Aim-7E2*3, Aim-9P*4, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "2x Mk-83 - 1000lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (MER) Ripple", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 3 + } + ], + "enabled": true, + "code": "IRON: Mk-83*10, Mk-83*3 (Ripple), Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1,", + "name": "IRON: Mk-83*10, Mk-83*3 (Ripple), Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1,", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-10*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-10*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) AGM-65B - Maverick B (TV Guided) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65B*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65B*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "A2A SHORT RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "A2A SHORT RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x AGM-65B - Maverick B (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65B*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65B*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 - 500lb GP Bomb LD (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 (LD)*24, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-82 (LD)*24, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A ECM: Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A ECM: Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-62 Walleye II*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-62 Walleye II*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-82 - 500lb GP Bomb LD (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 (LD)*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: Mk-82 (LD)*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "AIM-7M", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A LONG RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A LONG RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-82 Snakeye - 500lb GP Bomb HD (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 Snakeye*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: Mk-82 Snakeye*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) AGM-65D - Maverick D (IIR ASM) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65D*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65D*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "2x AGM-65A - Maverick A (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65A*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65A*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + IRON: SUU-23*2, Mk-82 Snakeye*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + IRON: SUU-23*2, Mk-82 Snakeye*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-52B - 220 x HE/Frag bomblets (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*10, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-52B*10, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-87 - 202 x CEM Cluster Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + Cluster: SUU-23*2, CBU-87*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + Cluster: SUU-23*2, CBU-87*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-52B - 220 x HE/Frag bomblets (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*10, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-52B*10, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*6, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*6, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER + IRON: Mk-20*6, Mk-82 (LD)*4 Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER + IRON: Mk-20*6, Mk-82 (LD)*4 Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye I - Guided Weapon Mk 1 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-62 Walleye II*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-62 Walleye II*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-8 HOBOS*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD: AGM-45A*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 370 Gal*2", + "name": "SEAD: AGM-45A*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 370 Gal*2", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "SEAD: AGM-45A*4, Aim-7E2*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1, Sargent Fl. Fuel Tank 370 Gal*2", + "name": "SEAD: AGM-45A*4, Aim-7E2*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1, Sargent Fl. Fuel Tank 370 Gal*2", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "AIM-7M", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A ECM: Aim-7M*3, Aim-9M*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A ECM: Aim-7M*3, Aim-9M*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9J*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9J*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*6, Aim-7E2*3, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*6, Aim-7E2*3, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A MEDIUM RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A MEDIUM RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye I - Guided Weapon Mk 1 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-8 HOBOS*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + Cluster: SUU-23*2, CBU-52B*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + Cluster: SUU-23*2, CBU-52B*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-52B - 220 x HE/Frag bomblets (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "CLUSTER: CBU-52B*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: Mk-20*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: Mk-20*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*12, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-87*12, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "CBU-52B - 220 x HE/Frag bomblets", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*6, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "CLUSTER: CBU-52B*6, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-87*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER + IRON: Mk-20*6, Mk-82 Snakeye*4 Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER + IRON: Mk-20*6, Mk-82 Snakeye*4 Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + Cluster: SUU-23*2, Mk-20*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + Cluster: SUU-23*2, Mk-20*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "SUU-23", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + ROCKETS: SUU-23*1, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "_GUNPOD + ROCKETS: SUU-23*1, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A ECM: Aim-7F*3, Aim-9P*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A ECM: Aim-7F*3, Aim-9P*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + GUIDED: AGM-45A*2, GBU-12*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + GUIDED: AGM-45A*2, GBU-12*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A Refueling Practice: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2 empty", + "name": "_A2A Refueling Practice: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A Refueling Practice: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2 empty", + "name": "_A2A Refueling Practice: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "3x M117 - 750lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "5x M117 - 750lb GP Bomb LD (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x M117 - 750lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: M-117*17, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: M-117*17, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-12C Bullpup - MCLOS missile", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-12C Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-12C Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-12C Bullpup - MCLOS missile", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-12C Bullpup*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-12C Bullpup*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-1A/A x 27x19 (513) BLU-4B Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x CBU-1A/A x 27x19 (513) BLU-4B Bomblets, HE (MER)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-1A/A (BLU-4B*513)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-1A/A (BLU-4B*513)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-2/A x 19x19 (361) BLU-3 Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x CBU-2/A x 19x19 (361) BLU-3 Bomblets, HE (MER)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-2A/A (BLU-3*361)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-2A/A (BLU-3*361)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-2B/A x 22x19 (418) BLU-3B Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x CBU-2B/A x 22x19 (418) BLU-3B Bomblets, HE (MER)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-2B/A (BLU-3B*418)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-2B/A (BLU-3B*418)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-1A/A x 27x19 (513) BLU-4B Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-1A/A (BLU-4B*513)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "name": "CLUSTER: CBU-1A/A (BLU-4B*513)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-2/A x 19x19 (361) BLU-3 Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-2A/A (BLU-3*361)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "name": "CLUSTER: CBU-2A/A (BLU-3*361)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-2B/A x 22x19 (418) BLU-3B Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-2B/A (BLU-3B*418)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "name": "CLUSTER: CBU-2B/A (BLU-3B*418)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 6 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1, Sargent Fletcher Fuel Tank 370 gallons*2", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1, Sargent Fletcher Fuel Tank 370 gallons*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons (empty)", + "quantity": 2 + }, + { + "name": "", + "quantity": 6 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 370 gallons*2 empty", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 370 gallons*2 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 8 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons (empty)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1 empty", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 6 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons (empty)", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons (empty)", + "quantity": 2 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1, Sargent Fletcher Fuel Tank 370 gallons*2 empty", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1, Sargent Fletcher Fuel Tank 370 gallons*2 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + } + ], + "filename": "f-4.png", + "description": "2 Jet engine, swept wing, 2 crew. Phantom", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false + } } \ No newline at end of file diff --git a/moc_dcs/Mods/Services/Olympus/databases/units/aircraftdatabase.json b/databases/units/default/aircraftdatabase.json similarity index 81% rename from moc_dcs/Mods/Services/Olympus/databases/units/aircraftdatabase.json rename to databases/units/default/aircraftdatabase.json index eff28f3c..2f6c46c1 100644 --- a/moc_dcs/Mods/Services/Olympus/databases/units/aircraftdatabase.json +++ b/databases/units/default/aircraftdatabase.json @@ -2793,6 +2793,48 @@ "canTargetPoint": false, "canRearm": false }, + "KJ-2000": { + "name": "KJ-2000", + "coalition": "red", + "label": "KJ-2000", + "era": "Late Cold War", + "shortLabel": "KJ2k", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "AWACS" + ] + } + ], + "filename": "a-50.png", + "enabled": true, + "liveries": { + "china air force kj-2000 (parade 93)": { + "name": "china air force kj-2000 (parade 93)", + "countries": [ + "CHN" + ] + }, + "china air force kj-2000": { + "name": "china air force kj-2000", + "countries": [ + "CHN" + ] + } + }, + "type": "Aircraft", + "description": "4 jet engine, swept wing, 15 crew. NATO reporting name: Mainring", + "abilities": "AEW", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false + }, "AJS37": { "name": "AJS37", "coalition": "blue", @@ -11093,7 +11135,7 @@ } ], "filename": "f-4.png", - "enabled": true, + "enabled": false, "liveries": { "haf aegean ghost": { "name": "Hellenic Airforce - Aegean Ghost", @@ -13076,6 +13118,50 @@ "CAP" ] }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM Active Rdr AAM", + "quantity": 6 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 2 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*6, FUEL*2", + "name": "AIM-9X*2, AIM-120C-5*6, FUEL*2", + "roles": [ + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9X Sidewinder IR AAM", + "quantity": 2 + }, + { + "name": "AIM-120C-5 AMRAAM Active Rdr AAM", + "quantity": 2 + }, + { + "name": "FPU-8A Fuel Tank 330 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "AIM-9X*2, AIM-120C-5*2, FUEL*1", + "name": "AIM-9X*2, AIM-120C-5*2, FUEL*1", + "roles": [ + "CAP" + ] + }, { "items": [ { @@ -17686,7 +17772,8 @@ "acquisitionRange": "", "engagementRange": "", "canTargetPoint": false, - "canRearm": false + "canRearm": false, + "cost": null }, "KC135MPRS": { "name": "KC135MPRS", @@ -32899,7 +32986,7 @@ "label": "A-10A Warthog", "shortLabel": "A10", "type": "A_10A", - "enabled": true, + "enabled": false, "liveries": {} }, "A-10C": { @@ -32914,13 +33001,32 @@ }, "KC130": { "name": "KC130", - "coalition": "", - "era": "", - "label": "KC130", - "shortLabel": "130", - "type": "KC130", - "enabled": false, - "liveries": {} + "coalition": "blue", + "label": "KC-130", + "era": "Early Cold War", + "shortLabel": "K130", + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "Tanker" + ] + } + ], + "filename": "c-130.png", + "enabled": true, + "liveries": {}, + "type": "Aircraft", + "description": "4 turboprop, stright wing, 3 crew. Tanker/transport aircraft. Hercules", + "abilities": "Tanker, Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": false, + "canRearm": false }, "C-101EB": { "name": "C-101EB", @@ -32932,16 +33038,6 @@ "enabled": false, "liveries": {} }, - "KJ-2000": { - "name": "KJ-2000", - "coalition": "", - "era": "", - "label": "KJ-2000", - "shortLabel": "KJ-2000", - "type": "KJ_2000", - "enabled": false, - "liveries": {} - }, "WingLoong-I": { "name": "WingLoong-I", "coalition": "", @@ -33291,5 +33387,5957 @@ "type": "TF_51D", "enabled": false, "liveries": {} + }, + "F-4E-45MC": { + "name": "F-4E-45MC", + "coalition": "", + "era": "", + "label": "F-4E-45MC", + "shortLabel": "4", + "type": "F_4E_45MC", + "enabled": true, + "liveries": { + "sl68-303_h1_110ang": { + "name": "F-4E - USAF - SL68-303 - Hill One - 110th Missouri ANG by LanceCriminal86", + "countries": "All" + }, + "tuaf-68-0342-h2": { + "name": "F-4E - TuAF - 68-0342 - Hill Two by Aqil", + "countries": "All" + }, + "jasdf-57-8368": { + "name": "F-4EJ - JASDF - 57-8368 by Mach3DS", + "countries": "All" + }, + "thunderbird4": { + "name": "F-4E - USAF - THUNDERBIRD 4", + "countries": "All" + }, + "default": { + "name": "F-4E - USAF - GA68-400 - Hill Two - 20th TFTS Silver Lobos", + "countries": "All" + }, + "iriaf-3-6673": { + "name": "F-4E - IRIAF - 3-6673 - 91st TFS - 9th TFB by ISAAC", + "countries": "All" + }, + "38+59_n90_jg71": { + "name": "F-4F - 38+59 - Norm 90 - JG 71 Richthofen", + "countries": "All" + }, + "haf-generic-ag": { + "name": "F-4E - HAF - Generic - Aegean Ghost", + "countries": "All" + }, + "wa68-373_sea_57ttw": { + "name": "F-4E - USAF - WA68-373 - SEA - 57th Tactical Training Wing", + "countries": "All" + }, + "iriaf-3-6564": { + "name": "F-4E - IRIAF - 3-6564 - 31st TFS by ISAAC", + "countries": "All" + }, + "tuaf-67-0268-h2": { + "name": "F-4E - TuAF - 67-0268 - Hill Two by Aqil", + "countries": "All" + }, + "iriaf-3-6643": { + "name": "F-4E - IRIAF - 3-6643 - 61st TFS by ISAAC", + "countries": "All" + }, + "thunderbird2": { + "name": "F-4E - USAF - THUNDERBIRD 2", + "countries": "All" + }, + "haf-01520_ab": { + "name": "F-4E - HAF - 01520 - Aegean Blue by Fish", + "countries": "All" + }, + "eaf-70355_h2": { + "name": "F-4E - EAF - 70355 - Hill Two by Kerbo", + "countries": "All" + }, + "iaf-kurnass-114-119sqn": { + "name": "F-4E - IAF - Kurnass 114 - 119 SQN", + "countries": "All" + }, + "37+36_n72_jg74": { + "name": "F-4F - 37+36 - Norm 72 - JG 74 - Moelders", + "countries": "All" + }, + "eaf-60366_ghost": { + "name": "F-4E - EAF - 60366 - Ghost Grey by Kerbo", + "countries": "All" + }, + "th68-450_h1_457fs": { + "name": "F-4E - USAF - TH68-450 - Hill Two - 457th FS Spads", + "countries": "All" + }, + "jv67-288_seaw_469tfs": { + "name": "F-4E - USAF - JV70-288 - SEA - 469th TFS Tigers", + "countries": "All" + }, + "37+24_n81b_jg72": { + "name": "F-4F - 37+24 - Norm 81 B - JG 72 Westphalen", + "countries": "All" + }, + "eaf-70373_seaw": { + "name": "F-4E - EAF - 70373 - SEA by Kerbo", + "countries": "All" + }, + "rokaf-68377-h2-156fs": { + "name": "F-4E - ROKAF - 68-377 - Hill Two - 156th FS", + "countries": "All" + }, + "raaf-97203_sea": { + "name": "F-4E - RAAF - 97203 - SEA", + "countries": "All" + }, + "jasdf-57-6371": { + "name": "RF-4EJ - JASDF - 57-6371 - SEA by Kerbo", + "countries": "All" + }, + "rs68-381_e1_526tfs": { + "name": "F-4E - USAF - RS68-381 - Euro One - 526th TFS", + "countries": "All" + }, + "adc af66-382": { + "name": "F-4E - USAF - AF66-382 - ADC - 57th FIS by Mach3DS", + "countries": "All" + }, + "thunderbird7": { + "name": "F-4E - USAF - THUNDERBIRD 7", + "countries": "All" + }, + "rokaf-80407-h2-152fs": { + "name": "F-4E - ROKAF - 80407 - Hill Two - 152nd FS", + "countries": "All" + }, + "iiaf-3-6687": { + "name": "F-4E - IIAF - 3-6687 by ISAAC", + "countries": "All" + }, + "raf-43-sqn-fg.1": { + "name": "Fictional Royal Air Force 43(F) Sqn FG.1 by Fish", + "countries": "All" + }, + "rs68-480_sea_512tfs": { + "name": "F-4E - USAF - RS68-480 - SEA Wrap Around - 512th TFS Dragons", + "countries": "All" + }, + "jv67-287_seaw_469tfs": { + "name": "F-4E - USAF - JV70-287 - SEA - 469th TFS Tigers", + "countries": "All" + }, + "tuaf-66-0312_h2_karasahin": { + "name": "F-4E - TuAF - 66-0312 - Hill Two - Kara Sahin (Black Hawk) by Aqil", + "countries": "All" + }, + "haf-71752_seaw": { + "name": "F-4E - HAF - 71752 - SEAW", + "countries": "All" + }, + "tuaf-67-0285-sea": { + "name": "F-4E - TuAF - 67-0285 - SEA by Aqil", + "countries": "All" + }, + "37+83_n81a_jg74": { + "name": "F-4F - 37+83 - Norm 81 A - JG 74 Moelders - GAFTIC 1986", + "countries": "All" + }, + "haf-01507_ag": { + "name": "F-4E - HAF - 01507 - Aegean Ghost", + "countries": "All" + }, + "37+01_pp_jg71": { + "name": "F-4F - 37+01 - Phantom Pharewell - JG71 - 2013", + "countries": "All" + }, + "adc af66-300": { + "name": "F-4E - USAF - AF66-300 - ADC - 57th FIS by Mach3DS", + "countries": "All" + }, + "rokaf-80470-cg-153fs": { + "name": "F-4E - ROKAF - 78740 - Compass Ghost - 153rd FS", + "countries": "All" + }, + "iiaf-usaf": { + "name": "F-4E - IIAF - USAF - 00252 - Asia Minor by ISAAC", + "countries": "All" + }, + "jasdf-77-8399": { + "name": "F-4EJ - JASDF - 77-8399 - Final Year Black by Mach3DS", + "countries": "All" + }, + "tuaf-69-7585-h2-son_seytanlar": { + "name": "F-4E - TuAF - 69-7585 - Hill Two - Son Seytanlar by Aqil", + "countries": "All" + }, + "jasdf-87-8312-3wg-blackpanthers50th": { + "name": "F-4EJ - JASDF - 87-8312 - 3WG 50th Anniversary by Fish", + "countries": "All" + }, + "rs68-517_sea_526tfs": { + "name": "F-4E - USAF - RS68-517 - SEA Wrap Around - 526th TFS", + "countries": "All" + }, + "thunderbird3": { + "name": "F-4E - USAF - THUNDERBIRD 3", + "countries": "All" + }, + "ca68-426_h2_163tfg": { + "name": "F-4E - USAF - CA68-426 - Hill Two - 163rd TFG", + "countries": "All" + }, + "iaf-kurnass-175-69sqn": { + "name": "F-4E - IAF - Kurnass 175 - 69 SQN", + "countries": "All" + }, + "37+45_n90_jg74": { + "name": "F-4F - 37+45 - Norm 90 - JG 74 Moelders", + "countries": "All" + }, + "ca69-382_h2_163tfg": { + "name": "F-4E - USAF - CA69-382 - Hill Two - 163rd TFG", + "countries": "All" + }, + "jasdf-87-8312-3wg": { + "name": "F-4EJ - JASDF - 87-8312 - 3WG by Fish", + "countries": "All" + }, + "thunderbird6": { + "name": "F-4E - USAF - THUNDERBIRD 6", + "countries": "All" + }, + "jasdf-57-8367-301st": { + "name": "F-4EJ - JASDF - 57-8367 - Grey - 301st", + "countries": "All" + }, + "jasdf-67-8380": { + "name": "F-4EJ - JASDF - 67-8380 by Mach3DS", + "countries": "All" + }, + "nj68-357_h1_141tfs": { + "name": "F-4E - USAF - NJ68-357 - Hill Two - 141st TFS Tigers", + "countries": "All" + }, + "os68-349_seaw_36tfs": { + "name": "F-4E - USAF - OS68-349 - SEA - 36th TFS The Flying Fiends", + "countries": "All" + }, + "jasdf-07-8428": { + "name": "F-4EJ - JASDF - 07-8428 - Final Year White by Mach3DS", + "countries": "All" + }, + "tuaf-77-0288-h2-70thnato": { + "name": "F-4E - TuAF - 77-0288 - Hill Two - NATO 70th by Fish", + "countries": "All" + }, + "wa66-376_e1_57ttw": { + "name": "F-4E - USAF - WA66-376 - Euro One - 57th Tactical Training Wing", + "countries": "All" + }, + "jasdf-87-8409-adtw-gifuab2017": { + "name": "F-4EJ - JASDF - 87-8409 - ADTW 2017 Digtial Green by Fish", + "countries": "All" + }, + "thunderbird1": { + "name": "F-4E - USAF - THUNDERBIRD 1", + "countries": "All" + }, + "38+13_pp_wtd61": { + "name": "F-4F - 38+13 - Phantom Pharewell - WTD61 - 2013", + "countries": "All" + }, + "rokaf-80728-h2-153fs": { + "name": "F-4E - ROKAF - 78728 - Hill Two - 153rd FS", + "countries": "All" + }, + "37+49_n81a_jg73": { + "name": "F-4F - 37+49 - Norm 81 A - JaboG 35 - GAFTIC 1985", + "countries": "All" + }, + "my68-328_e1_68fs": { + "name": "F-4E - USAF - MY68-328 - Euro One - 68th FS Lightning Lancers", + "countries": "All" + }, + "tuaf-77-1053-h2_korsanlar": { + "name": "F-4E - TuAF - 77-1053 - Hill Two - Korsanlar by Aqil", + "countries": "All" + }, + "thunderbird5": { + "name": "F-4E - USAF - THUNDERBIRD 5", + "countries": "All" + }, + "38+10_n72_jg71": { + "name": "F-4F - 38+10 - Norm 72 - JG 71 - 2013", + "countries": "All" + } + }, + "loadouts": [ + { + "items": [], + "enabled": true, + "code": "", + "name": "Empty loadout", + "roles": [ + "No task", + "CAP" + ] + }, + { + "items": [ + { + "name": "2x Mk-83 - 1000lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (MER) Ripple", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-83*4, Mk-83*3 (Ripple), Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-83*4, Mk-83*3 (Ripple), Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "3x AGM-65A - Maverick A (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65A*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65A*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD: AGM-45A*4, Aim-7E2*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD: AGM-45A*4, Aim-7E2*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*6, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*6, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (TER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*2, LAU-68 7x .75, M156 WP*2, Aim-7E2*3, Aim-9P*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*2, LAU-68 7x .75, M156 WP*2, Aim-7E2*3, Aim-9P*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9M*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9M*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "{HB_F4E_WALLEYE_I}", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-62 Walleye I*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-62 Walleye I*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "SEAD + GUIDED: AGM-45A*2, GBU-12*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + GUIDED: AGM-45A*2, GBU-12*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-65A - Maverick A (TV Guided) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-65A*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-65A*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65B - Maverick B (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65B*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65B*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-12*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 Snakeye - 500lb GP Bomb HD (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 Snakeye*24, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-82 Snakeye*24, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*6, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-12*6, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9L*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65A - Maverick A (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65A*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65A*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + ROCKETS: SUU-23*2, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*9, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "_GUNPOD + ROCKETS: SUU-23*2, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*9, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65B - Maverick B (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65B*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65B*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: Mk-20*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: Mk-20*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*3, LAU-68 7x 2.75 FFAR, MK-5 HEAT*6, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*3, LAU-68 7x 2.75 FFAR, MK-5 HEAT*6, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "1x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*9, LAU-68 7x 2.75 FFAR, MK-5 HEAT*2, Aim-7E2*4, AIM-9L*4, ALE-40 (30-60)*1", + "name": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*9, LAU-68 7x 2.75 FFAR, MK-5 HEAT*2, Aim-7E2*4, AIM-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A MEDIUM RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A MEDIUM RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 - 500lb GP Bomb LD (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "{2x Mk-82 SWA}", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "IRON: Mk-82 (LD)*18, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: Mk-82 (LD)*18, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-24*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-24*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-82 Snakeye - 500lb GP Bomb HD (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 Snakeye*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: Mk-82 Snakeye*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "SEAD: AGM-45A*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 370 Gal*2", + "name": "SEAD: AGM-45A*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 370 Gal*2", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "6x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (MER)", + "quantity": 1 + }, + { + "name": "3x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD: SUU-23*3, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "_GUNPOD: SUU-23*3, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 6 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye I - Guided Weapon Mk 1 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-10*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-10*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (MER)", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*5, SUU-23*2, Aim-7E2*4, ALE-40 (30-60)", + "name": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*5, SUU-23*2, Aim-7E2*4, ALE-40 (30-60)", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-87 - 202 x CEM Cluster Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*8, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-87*8, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "CBU-52B - 220 x HE/Frag bomblets", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*4, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-52B*4, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65D - Maverick D (IIR ASM) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65D*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65D*4, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-65D - Maverick D (IIR ASM) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-65D*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-65D*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-87*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-87 - 202 x CEM Cluster Bomb (TER)", + "quantity": 2 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*14, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-87*14, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "AIM-7M", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "A2A SHORT RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "A2A SHORT RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x AGM-65D - Maverick D (IIR ASM) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65D*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65D*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD: SUU-23*2, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD: SUU-23*2, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*15, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*15, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*7, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "ROCKETS: LAU-3 19x 2.75 FFAR, Mk-5 HEAT*7, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "AIM-7M", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A MEDIUM RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A MEDIUM RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A LONG RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A LONG RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Fuel Tank 370 GAL*2", + "name": "GUIDED: GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x M117 - 750lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x M117 - 750lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: M-117*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: M-117*12, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 - 500lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "{2x Mk-82 SWA}", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "IRON: Mk-82 (LD)*12, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: Mk-82 (LD)*12, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-65B - Maverick B (TV Guided) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-65B*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-65B*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 8 + } + ], + "enabled": true, + "code": "_Z_Clean", + "name": "_Z_Clean", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-10*2, GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-10*2, GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "2x AGM-65D - Maverick D (IIR ASM) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65D*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65D*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "6x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (MER)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*6, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*6, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-52B*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "SUU-23", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + ROCKETS: SUU-23*1, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*4, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "_GUNPOD + ROCKETS: SUU-23*1, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*4, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-10*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-10*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A LONG RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A LONG RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A ECM: Aim-7E*3, Aim-9J*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A ECM: Aim-7E*3, Aim-9J*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A LONG RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A LONG RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9P*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9P*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-24*2, GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-24*2, GBU-12*4, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (MER) Ripple", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-83*6, Mk-83*3 (Ripple), Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: Mk-83*6, Mk-83*3 (Ripple), Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*2, SUU-23*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*2, SUU-23*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60), Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: Mk-20*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: Mk-20*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "A2A SHORT RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "A2A SHORT RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + } + ], + "enabled": true, + "code": "IRON: Mk-84*3, Mk-82 (LD)*4, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-84*3, Mk-82 (LD)*4, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + IRON: SUU-23*2, Mk-82 (LD)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + IRON: SUU-23*2, Mk-82 (LD)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A MEDIUM RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A MEDIUM RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fl. Tank 370 GAL*2", + "name": "GUIDED: GBU-8 HOBOS*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "M117 - 750lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x M117 - 750lb GP Bomb LD (TER)", + "quantity": 2 + } + ], + "enabled": true, + "code": "IRON: M-117*8, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: M-117*8, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 Snakeye - 500lb GP Bomb HD (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 Snakeye*18, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-82 Snakeye*18, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-10*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye II*2, GBU-10*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-12A Bullpup MCLOS ASM (LAU-34)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-12A Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-12A Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "3x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + ROCKETS: SUU-23*3, LAU-68 7x 2.75 FFAR, Mk-5 HEAT*6, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "_GUNPOD + ROCKETS: SUU-23*3, LAU-68 7x 2.75 FFAR, Mk-5 HEAT*6, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, GBU-8 HOBOS*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, GBU-8 HOBOS*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 3x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*12, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) AGM-65A - Maverick A (TV Guided) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65A*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65A*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-24*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-24*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + } + ], + "enabled": true, + "code": "IRON: Mk-84*2, Mk-82 (LD)*4, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: Mk-84*2, Mk-82 (LD)*4, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9JULI Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9Juli*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9Juli*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 8 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x M117 - 750lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: M-117*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: M-117*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9B Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9B*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9B*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-12B Bullpup MCLOS ASM (LAU-34)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-12B Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-12B Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AGM-62 Walleye I - Guided Weapon Mk 1 (TV Guided)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-62 Walleye I*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-62 Walleye I*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-84*2, Mk-82 (LD)*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "IRON: Mk-84*2, Mk-82 (LD)*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-12*2, Aim-7E2*3, Aim-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "Captive AIM-9M for ACM", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (Empty)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A TRAINING: Captive Aim-9M for ACM*2, ALQ-131 ECM*1, ALE-40 (empty)*1 ", + "name": "_A2A TRAINING: Captive Aim-9M for ACM*2, ALQ-131 ECM*1, ALE-40 (empty)*1 ", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Mk-84 - 2000lb GP Bomb LD", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-84*3, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-84*3, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "", + "quantity": 6 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 370 gallons*2", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 370 gallons*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x GBU-12 - 500lb Laser Guided Bomb (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-12*4, CBU-87*4, Aim-7E2*3, Aim-9L, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "GUIDED: GBU-12*4, CBU-87*4, Aim-7E2*3, Aim-9L, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "A2A SHORT RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "A2A SHORT RANGE: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos", + "quantity": 2 + }, + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x LAU-68 pod - 7 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (TER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*2, LAU-68 7x .75, M156 WP*2, Aim-7E2*3, Aim-9P*4, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 19x 2.75 FFAR, M156 WP*2, LAU-68 7x .75, M156 WP*2, Aim-7E2*3, Aim-9P*4, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "2x Mk-83 - 1000lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (MER) Ripple", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-83 - 1000lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 3 + } + ], + "enabled": true, + "code": "IRON: Mk-83*10, Mk-83*3 (Ripple), Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1,", + "name": "IRON: Mk-83*10, Mk-83*3 (Ripple), Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1,", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-10 - 2000lb Laser Guided Bomb", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-10*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-10*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) AGM-65B - Maverick B (TV Guided) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65B*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65B*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 2 + } + ], + "enabled": true, + "code": "A2A SHORT RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "A2A SHORT RANGE: Aim-7F*4, Aim-9P*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x AGM-65B - Maverick B (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65B*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65B*6, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "6x Mk-82 - 500lb GP Bomb LD (MER)", + "quantity": 3 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 (LD)*24, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: Mk-82 (LD)*24, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A ECM: Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A ECM: Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + } + ], + "enabled": true, + "code": "SEAD + ATGM: AGM-45A*2, AGM-62 Walleye II*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + ATGM: AGM-45A*2, AGM-62 Walleye II*2, Aim-7F*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-82 - 500lb GP Bomb LD (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 (LD)*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: Mk-82 (LD)*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "AIM-7M", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A LONG RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A LONG RANGE: Aim-7M*4, Aim-9M*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-82 Snakeye - 500lb GP Bomb HD (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: Mk-82 Snakeye*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "IRON: Mk-82 Snakeye*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) AGM-65D - Maverick D (IIR ASM) (LAU-117)(Special Weapons Adapter) ", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-65D*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-65D*2, GBU-24*2, Aim-7E2*3, AIM-9L*4, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "2x AGM-65A - Maverick A (TV Guided) (LAU-88)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-65A*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-65A*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + IRON: SUU-23*2, Mk-82 Snakeye*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + IRON: SUU-23*2, Mk-82 Snakeye*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-52B - 220 x HE/Frag bomblets (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*10, Aim-7E2*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-52B*10, Aim-7E2*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-87 - 202 x CEM Cluster Bomb (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + Cluster: SUU-23*2, CBU-87*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + Cluster: SUU-23*2, CBU-87*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-52B - 220 x HE/Frag bomblets (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*10, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-52B*10, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts M156, Wht Phos (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*6, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "name": "_AFAC: LAU-3 pod - 19x2.75 FFAR, M156 WP*6, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60), Sgt Fl 600 GAL*1", + "roles": [ + "FAC-A", + "Reconnaissance" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 - 500lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER + IRON: Mk-20*6, Mk-82 (LD)*4 Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER + IRON: Mk-20*6, Mk-82 (LD)*4 Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye I - Guided Weapon Mk 1 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-12*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-62 Walleye II - Guided Weapon Mk 5 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-62 Walleye II*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-62 Walleye II*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-8 HOBOS*4, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD: AGM-45A*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 370 Gal*2", + "name": "SEAD: AGM-45A*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 370 Gal*2", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AGM-45A Shrike ARM (LAU-34)", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "SEAD: AGM-45A*4, Aim-7E2*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1, Sargent Fl. Fuel Tank 370 Gal*2", + "name": "SEAD: AGM-45A*4, Aim-7E2*3, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1, Sargent Fl. Fuel Tank 370 Gal*2", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9M", + "quantity": 4 + }, + { + "name": "AIM-7M", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A ECM: Aim-7M*3, Aim-9M*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A ECM: Aim-7M*3, Aim-9M*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 2 + }, + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A HEATERS: Aim-9J*4, ALE-40 (30-60)*1", + "name": "_A2A HEATERS: Aim-9J*4, ALE-40 (30-60)*1", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "3x BLU-107/B Durandal - 219kg Concrete Piercing Chute Retarded Bomb w/Booster (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "CONRETE PIERCING: BLU-107/B Durandal*6, Aim-7E2*3, ALE-40 (30-60)*1", + "name": "CONRETE PIERCING: BLU-107/B Durandal*6, Aim-7E2*3, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9J Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A MEDIUM RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A MEDIUM RANGE: Aim-7E*4, Aim-9J*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-62 Walleye I - Guided Weapon Mk 1 (TV Guided)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "ATGM + GUIDED: AGM-62 Walleye I*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "GBU-24B/B Paveway III - 2000lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "AN/AVQ-23 Pave Spike (Fast/Smart Track) - Targeting Pod Rack", + "quantity": 1 + }, + { + "name": "GBU-8 HOBOS - 2000 lb TV Guided Bomb", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "GUIDED: GBU-8 HOBOS*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "name": "GUIDED: GBU-8 HOBOS*2, GBU-24*2, Aim-7E2*3, AN/AVQ-23 Pave Spike*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + Cluster: SUU-23*2, CBU-52B*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + Cluster: SUU-23*2, CBU-52B*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-52B - 220 x HE/Frag bomblets (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "CLUSTER: CBU-52B*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: Mk-20*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: Mk-20*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "CBU-87 - 202 x CEM Cluster Bomb", + "quantity": 2 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*12, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER: CBU-87*12, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "CBU-52B - 220 x HE/Frag bomblets", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "2x CBU-52B - 220 x HE/Frag bomblets (TER)", + "quantity": 2 + }, + { + "name": "", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-52B*6, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "CLUSTER: CBU-52B*6, Aim-7E2*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "4x CBU-87 - 202 x CEM Cluster Bomb (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-87*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-87*10, Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "6x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-82 Snakeye - 500lb GP Bomb HD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "CLUSTER + IRON: Mk-20*6, Mk-82 Snakeye*4 Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "CLUSTER + IRON: Mk-20*6, Mk-82 Snakeye*4 Aim-7E2*3, Aim-9L*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "SUU-23", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "(Special Weapons Adapter) 2x Mk-20 Rockeye - 490lbs CBU, 247 x HEAT Bomblets (TER)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + Cluster: SUU-23*2, Mk-20*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "name": "_GUNPOD + Cluster: SUU-23*2, Mk-20*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "3x LAU-3 pod - 19 x 2.75\" FFAR, UnGd Rkts Mk5, HEAT (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "SUU-23", + "quantity": 1 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + } + ], + "enabled": true, + "code": "_GUNPOD + ROCKETS: SUU-23*1, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "_GUNPOD + ROCKETS: SUU-23*1, LAU-3 19x 2.75 FFAR, Mk-5 HEAT*6, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9P Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "A2A ECM: Aim-7F*3, Aim-9P*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "name": "A2A ECM: Aim-7F*3, Aim-9P*4, ALQ-131 ECM*1, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "GBU-12 - 500lb Laser Guided Bomb", + "quantity": 2 + }, + { + "name": "(Special Weapons Adapter) AGM-45A Shrike ARM (LAU-34)", + "quantity": 2 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7F", + "quantity": 3 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + } + ], + "enabled": true, + "code": "SEAD + GUIDED: AGM-45A*2, GBU-12*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "name": "SEAD + GUIDED: AGM-45A*2, GBU-12*2, Aim-7F*3, Aim-9L*4, ALQ-131*1, ALE-40 (30-60)*1, Sargent Fl. Fuel Tank 600 Gal*1", + "roles": [ + "SEAD", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A Refueling Practice: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2 empty", + "name": "_A2A Refueling Practice: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 370 GAL*2 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_A2A Refueling Practice: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2 empty", + "name": "_A2A Refueling Practice: Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL*1, Sargent Fletcher Fuel Tank 370 GAL*2 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP" + ] + }, + { + "items": [ + { + "name": "3x M117 - 750lb GP Bomb LD (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "5x M117 - 750lb GP Bomb LD (MER)", + "quantity": 1 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "3x M117 - 750lb GP Bomb LD (TER)", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "IRON: M-117*17, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "name": "IRON: M-117*17, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + }, + { + "name": "AGM-12C Bullpup - MCLOS missile", + "quantity": 2 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-12C Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-12C Bullpup*2, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 3 + }, + { + "name": "ALQ-131 - ECM Pod Rack", + "quantity": 1 + }, + { + "name": "AGM-12C Bullpup - MCLOS missile", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "", + "quantity": 4 + } + ], + "enabled": true, + "code": "ATGM: AGM-12C Bullpup*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "name": "ATGM: AGM-12C Bullpup*4, Aim-7E2*3, ALQ-131 ECM*1, ALE-40 (30-60)*1, Srgt Fletcher Fl. Tank 370 GAL*2", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-1A/A x 27x19 (513) BLU-4B Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x CBU-1A/A x 27x19 (513) BLU-4B Bomblets, HE (MER)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-1A/A (BLU-4B*513)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-1A/A (BLU-4B*513)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-2/A x 19x19 (361) BLU-3 Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x CBU-2/A x 19x19 (361) BLU-3 Bomblets, HE (MER)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-2A/A (BLU-3*361)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-2A/A (BLU-3*361)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-2B/A x 22x19 (418) BLU-3B Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "1x CBU-2B/A x 22x19 (418) BLU-3B Bomblets, HE (MER)", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-2B/A (BLU-3B*418)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "name": "CLUSTER: CBU-2B/A (BLU-3B*418)*5, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-1A/A x 27x19 (513) BLU-4B Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-1A/A (BLU-4B*513)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "name": "CLUSTER: CBU-1A/A (BLU-4B*513)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-2/A x 19x19 (361) BLU-3 Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-2A/A (BLU-3*361)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "name": "CLUSTER: CBU-2A/A (BLU-3*361)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "2x CBU-2B/A x 22x19 (418) BLU-3B Bomblets, HE (MER)", + "quantity": 2 + }, + { + "name": "AIM-7E-2 Sparrow Semi-Active Radar", + "quantity": 4 + }, + { + "name": "ALE-40 Dispensers (30 Flares + 60 Chaff)", + "quantity": 1 + }, + { + "name": "AIM-9L Sidewinder IR AAM", + "quantity": 4 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + } + ], + "enabled": true, + "code": "CLUSTER: CBU-2B/A (BLU-3B*418)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "name": "CLUSTER: CBU-2B/A (BLU-3B*418)*4, Aim-7E2*4, Aim-9L*4, ALE-40 (30-60)*1, Sargent Fletcher Fuel Tank 600 GAL", + "roles": [ + "CAS", + "Strike", + "Strike", + "Runway Attack", + "Antiship Strike" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 6 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons", + "quantity": 2 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1, Sargent Fletcher Fuel Tank 370 gallons*2", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1, Sargent Fletcher Fuel Tank 370 gallons*2", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "Sargent Fletcher Fuel Tank 370 gallons (empty)", + "quantity": 2 + }, + { + "name": "", + "quantity": 6 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 370 gallons*2 empty", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 370 gallons*2 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 8 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons (empty)", + "quantity": 1 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1 empty", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + }, + { + "items": [ + { + "name": "", + "quantity": 6 + }, + { + "name": "Sargent Fletcher Fuel Tank 600 gallons (empty)", + "quantity": 1 + }, + { + "name": "Sargent Fletcher Fuel Tank 370 gallons (empty)", + "quantity": 2 + } + ], + "enabled": true, + "code": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1, Sargent Fletcher Fuel Tank 370 gallons*2 empty", + "name": "_Z_Clean, Sargent Fletcher Fuel Tank 600 gallons*1, Sargent Fletcher Fuel Tank 370 gallons*2 empty", + "roles": [ + "CAP", + "Escort", + "CAP", + "CAP", + "CAS", + "Strike", + "Strike", + "Runway Attack", + "FAC-A", + "Antiship Strike", + "Reconnaissance", + "SEAD" + ] + } + ], + "filename": "f-4.png", + "description": "2 Jet engine, swept wing, 2 crew. Phantom", + "abilities": "Drogue AAR", + "acquisitionRange": "", + "engagementRange": "", + "canTargetPoint": true, + "canRearm": false } } \ No newline at end of file diff --git a/client/public/databases/units/groundunitdatabase.json b/databases/units/default/groundunitdatabase.json similarity index 99% rename from client/public/databases/units/groundunitdatabase.json rename to databases/units/default/groundunitdatabase.json index 7082996f..5d735eab 100644 --- a/client/public/databases/units/groundunitdatabase.json +++ b/databases/units/default/groundunitdatabase.json @@ -9061,10 +9061,10 @@ "type": "AAA", "enabled": true, "liveries": {}, - "aimTime": 18, - "shotsToFire": 5, - "acquisitionRange": 8000, - "engagementRange": 1000, + "aimTime": 25, + "shotsToFire": 2, + "acquisitionRange": 15000, + "engagementRange": 12000, "description": "The flak 88. Fixed anti aircraft gun famously also used as an anti-tank gun. 88mm flak gun.", "abilities": "AA", "canTargetPoint": true, @@ -9074,11 +9074,11 @@ "cost": 40000, "markerFile": "groundunit-aaa", "canAAA": true, - "shotsBaseInterval": 5, + "shotsBaseInterval": 10, "shotsBaseScatter": 5, - "aimMethodRange": 100, - "targetingRange": 7000, - "alertnessTimeConstant": 5 + "aimMethodRange": 15000, + "targetingRange": 200, + "alertnessTimeConstant": 15 }, "Pz_IV_H": { "name": "Pz_IV_H", diff --git a/client/public/databases/units/default/helicopterdatabase.json b/databases/units/default/helicopterdatabase.json similarity index 100% rename from client/public/databases/units/default/helicopterdatabase.json rename to databases/units/default/helicopterdatabase.json diff --git a/client/public/databases/units/default/navyunitdatabase.json b/databases/units/default/navyunitdatabase.json similarity index 100% rename from client/public/databases/units/default/navyunitdatabase.json rename to databases/units/default/navyunitdatabase.json diff --git a/moc_dcs/Mods/Services/Olympus/databases/units/groundunitdatabase.json b/databases/units/groundunitdatabase.json similarity index 99% rename from moc_dcs/Mods/Services/Olympus/databases/units/groundunitdatabase.json rename to databases/units/groundunitdatabase.json index 7082996f..5d735eab 100644 --- a/moc_dcs/Mods/Services/Olympus/databases/units/groundunitdatabase.json +++ b/databases/units/groundunitdatabase.json @@ -9061,10 +9061,10 @@ "type": "AAA", "enabled": true, "liveries": {}, - "aimTime": 18, - "shotsToFire": 5, - "acquisitionRange": 8000, - "engagementRange": 1000, + "aimTime": 25, + "shotsToFire": 2, + "acquisitionRange": 15000, + "engagementRange": 12000, "description": "The flak 88. Fixed anti aircraft gun famously also used as an anti-tank gun. 88mm flak gun.", "abilities": "AA", "canTargetPoint": true, @@ -9074,11 +9074,11 @@ "cost": 40000, "markerFile": "groundunit-aaa", "canAAA": true, - "shotsBaseInterval": 5, + "shotsBaseInterval": 10, "shotsBaseScatter": 5, - "aimMethodRange": 100, - "targetingRange": 7000, - "alertnessTimeConstant": 5 + "aimMethodRange": 15000, + "targetingRange": 200, + "alertnessTimeConstant": 15 }, "Pz_IV_H": { "name": "Pz_IV_H", diff --git a/client/public/databases/units/helicopterdatabase.json b/databases/units/helicopterdatabase.json similarity index 100% rename from client/public/databases/units/helicopterdatabase.json rename to databases/units/helicopterdatabase.json diff --git a/client/public/databases/units/navyunitdatabase.json b/databases/units/navyunitdatabase.json similarity index 100% rename from client/public/databases/units/navyunitdatabase.json rename to databases/units/navyunitdatabase.json diff --git a/installer/installer/node-v20.10.0-x64.msi b/dependencies/VC_redist.x64.exe similarity index 68% rename from installer/installer/node-v20.10.0-x64.msi rename to dependencies/VC_redist.x64.exe index 43a1bcdb..9ea49556 100644 Binary files a/installer/installer/node-v20.10.0-x64.msi and b/dependencies/VC_redist.x64.exe differ diff --git a/installer/archive/node-v20.10.0-x64.msi b/dependencies/node-v20.10.0-x64.msi similarity index 100% rename from installer/archive/node-v20.10.0-x64.msi rename to dependencies/node-v20.10.0-x64.msi diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 05f1ae58..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,9 +0,0 @@ -version: '3' - -services: - client: - build: client - ports: - - 3000:3000 - volumes: - - ./olympus.json:/usr/src/olympus.json diff --git a/docs/images/manager1.jpg b/docs/images/manager1.jpg new file mode 100644 index 00000000..a3d346b0 Binary files /dev/null and b/docs/images/manager1.jpg differ diff --git a/docs/images/manager2.png b/docs/images/manager2.png new file mode 100644 index 00000000..02d842b1 Binary files /dev/null and b/docs/images/manager2.png differ diff --git a/docs/images/manager3.png b/docs/images/manager3.png new file mode 100644 index 00000000..90bd1b41 Binary files /dev/null and b/docs/images/manager3.png differ diff --git a/docs/images/manager4.png b/docs/images/manager4.png new file mode 100644 index 00000000..3881ef25 Binary files /dev/null and b/docs/images/manager4.png differ diff --git a/docs/images/manager5.png b/docs/images/manager5.png new file mode 100644 index 00000000..ff7f9e10 Binary files /dev/null and b/docs/images/manager5.png differ diff --git a/docs/images/manager6.png b/docs/images/manager6.png new file mode 100644 index 00000000..9736accf Binary files /dev/null and b/docs/images/manager6.png differ diff --git a/docs/map_generation.md b/docs/map_generation.md new file mode 100644 index 00000000..1d5f191a --- /dev/null +++ b/docs/map_generation.md @@ -0,0 +1,62 @@ +## INSTRUCTIONS FOR MAP GENERATION + +Prerequisites: Olympus v1.0.4 or newer must be installed in the DCS instance that will be used to generate the maps. The Camera Control Plugin must be enabled. It is NOT required for Olympus to be running during the map generation process. + +### Steps + +1) Ensure you have the latest version of the repository; + +2) Install Python version 3.12.x or newer; + +3) Open a command console in the `scripts\python\map_generator` folder; + +4) Install the necessary Python packages running the following command: + ``` + pip install -r requirements.txt + ``` + +5) Open the `configs\screen_properties.yml` file and edit it by add your computer monitor size. Note: this is the size of the physical screen; + +If you want to run an existing configuration file, skip to step 10. + +6) Create a new folder inside `configs\` and name it as you please. For clarity, in these example the folder will be called `test`; + +7) Create a configuration yaml file inside the `test` folder and name it as you please. In these example the file will be called `config.yaml`. It is suggested to start from one of the provided configurations as reference. + +8) The configuration file must contain the following fields: +``` +{ + 'output_directory': '.\test', + 'boundary_file': '.\configs\test\boundary.kml', + 'zoom_factor': 0.5, + 'geo_width': 15.38 +} +``` + +`output_directory`: location where the created files will be placed;
+`boundary_file`: KML file containing the area that the map will cover. See below for more information;
+`zoom_factor`: value between 0 and 1 that controls how zoomed the map will be. 1 means zoomed all the way out, 0 means zoomed all the way in;
+`geo_width`: [optional] Size of the screen in nautical miles at the provided zoom level. See below for more details; + +9) Create a boundary file. It is suggested to use Google Earth Pro or similar. Generate one or more polygons that encircle the area or areas you want to cover with the map and save them in a single .kml file. No specific naming or other requirements are present. From the example above the name would be `.\configs\test\boundary.kml`; + +10) Start DCS. Start a mission in the correct theater, then open the F10 map. DCS must be running on your primary monitor (check your Windows screen settings); + +10) Open a command console in the `scripts\python\map_generator` folder and run the following command, replacing the config file location with yours: + ``` + python main.py .\configs\test\config.yml + ``` + +11) The script will run, showing the loaded configuration and some computed values. If the `geo_width` value from step 8 is not provided in the configuration, the script will require you to enter it now. This value is computed by using the DCS F10 map measuring tool. Using the tool, measure the width of the screen, from end to end, in nautical miles. The script will automatically configure DCS in the correct state to do this. + +12) The script will compute the number of screenshots that will be taken and will ask for confirmation. Unless you have multiple screens, it is suggested to resize the console to be very small and tuck it on the upper or lower edge of the screen. It is paramount that no window covers the center of the screen. There is a 300px margin all around the screen that can be covered by other windows; + +13) Press enter to start. Multiple progress bars will be shown along the process. Just wait and have a nice walk :) + +### Resuming computation + +Currently the screenshots taking process can not be resumed. However, if you already run the screenshot process once, the script will ask you if you want to skip the screenshots and go directly to the tiles processing. + + + + diff --git a/docs/user_guide.md b/docs/user_guide.md new file mode 100644 index 00000000..affe3de1 --- /dev/null +++ b/docs/user_guide.md @@ -0,0 +1,913 @@ +# Contents +See GitHub Contents on the right of the page. + + +# Introduction + +## What is Olympus? + +Olympus is a program designed and created by a small group of people who love DCS. We felt there are ways of playing DCS that could be more fluid, and involve less use of Lua, and to open up mission making to a greater group of people. + +This led to the creation of the Olympus program. A web-based app that does a lot of the thinking for a mission, then simplifies it and tells DCS what to do. Thus removing the mission editor (almost) entirely from the process. + +The user interface is key to this experience, and we have done our best to make it clear and fun to use. We have leveraged the conventions many of you may have gotten used to via other real-time strategy games as Olympus does turn DCS into a real-time strategy game. One in which a Game Master can create as complex a mission as they like, however they like, completely on the fly. Using Olympus requires a human to play it "live" like a game master; it is not a tool for pre-game mission creation or planning. However, it will work alongside any premade mission. + +## The Team + +| Handle | Contribution | +|-------------|-------------------------------------------| +| Veltro | Project originator and lead programmer | +| El Tonio | Concept originator and programmer | +| Dogma | Upside down UI Wizard | +| Peekaboo | Programmer | +| Wirt | Lua Consultant | +| Woods | Programmer | +| Shredmetal | Legal Eagle | +| Lovo | Dog's Body | + +# Basics + +## Installing Olympus + +**NOTE: the installation process has been greatly modified in version v1.0.4. These instructions are NOT applicable to v1.0.3. Users are suggested to update to the latest version.** + +**NOTE: Olympus is offered in two different packages: an autoinstaller package and an archive package. The autoinstaller package is marked with the prefix ```autoinstaller_```. THESE INSTRUCTION ARE ONLY APPLICABLE TO THE AUTOINSTALLER VERSION. The archived version is intended for automatic tools like [SpecialK's Server Bot](https://github.com/Special-K-s-Flightsim-Bots/DCSServerBot).** + +Download the latest release autoinstaller package from the [Github releases page](https://github.com/Pax1601/DCSOlympus/releases). After downloading the package, unpack it and follow these steps: + +1) **Close any applications which may interfere with installation**, including Digital Combat Simulator (DCS) and previous versions of Olympus. +
+2) **If you DO NOT have Olympus v1.0.3 already installed, SKIP THIS STEP. If you have already installed Olympus v1.0.3, do the following**: +NOTE: If you made any changes to your unit databases or mods.lua file (e.g. to support a third party mod) make a backup of the edited files before proceeding or changes will be lost; +a) **If you installed DCS Olympus v1.0.3 using the installer**, simply remove it using Windows's "Add or remove programs" application. +b) **If you installed DCS Olympus v1.0.3 using the archived version**, remove it by deleting the "...\Mods\Services\Olympus" folder. Do this for every DCS instance you installed Olympus in. + Remember to delete any shortcuts you created. Don't worry, they will be created automatically again by the installation script provided in this package. +
+3) **Create a folder named "DCS Olympus"** in your "Saved Games" directory and **extract all the contents of the downloaded package into it**. + NOTE: + a) Do not extract the contents of the package directly in your Saved Games folder or in your DCS Saved Games folder. + b) Unlike previous version of Olympus, it is no longer necessary to copy the packaged files into each DCS instance folder. +
+4) **Execute the "installer.bat"** script by double-clicking on it. It is located in the folder you created in step 3. Wait for the installation script to complete. **Installation may take a couple of minutes, after which the Manager will start automatically**. + NOTE: depending on your Windows configuration, the script may be called "installer" (without .bat at the end). +
+5) The Olympus Manager will open. This will allow you to add/remove Olympus to individual DCS instances. + **Use the Olympus Manager and follow the instructions to install and setup Olympus** (see the dedicated section below for more information). +
+6) **Start DCS and run a mission. Make sure it is UNPAUSED**. +
+7) **Open Olympus via the shortcut and login using any username and the Game Master password set using the Manager. (NOTE: not your DCS server password)**. +Local installation: run the client from the provided desktop shortcut. +Dedicated server: users must first start the Olympus server from the provided desktop shortcut or using the "Expert view" mode of the Manager. +Then log in using any browser and visiting ```http:\\server_IP:frontend_port``` (frontend port is 3000 by default, but can be edited using the Manager) +
+8) You can use the manager at any time to change the ports and/or passwords. If you do, **REMEMBER TO RESTART OLYMPUS AND DCS**. + +NOTES: +a) when launching the Manager you will be prompted to allow Electron to create a firewall rule. This is optional and can be denied without effect on the operation of the Manager; +b) if you are using Olympus on a dedicated server with a router, you must enable port forwarding on the frontend port (3000 by default); +c) unlike Olympus v1.0.3, **running the netsh command is no longer required. It is also no longer required to create firewall rules or port forwarding for the backend port. (Optional) If you already performed this steps in the past you can delete the firewall and netsh rules**. + + +Once you have installed Olympus, it will run whenever you are playing a DCS local mission or hosting a multiplayer server. To control the action, open the Olympus client via the icon on your desktop or start menu. + +## Using the Manager +The Olympus Manager is used to install, update, and configure your Olympus installation. If you own a dedicated server and run multiple Olympus instances at the same time, the Manager allows you to conveniently handle them from a single location. + +**REMEMBER, after installing Olympus with step 4) of the installation process above, you will still need to add it to your DCS instance!** + +When you start the Manager for the first time, it will allow to choose between Basic and Expert mode. Basic mode is suggested for local only users, while Expert mode is tailored for dedicated server owners. You can change the mode at any time with the link in the toolbar at the top of the manager. Note that the choice of the Manager mode has no impact on the functionality of Olympus. Server owners can use Basic mode, or vice versa. + +### Basic mode + +Basic mode gives you access to an installation Wizard. To start it, click on "Add Olympus". If you have more than one DCS instance installed, the Wizard will allow you to select the one you want to add Olympus to. If only one instance is detected, this step will be skipped. + +**Should the Wizard fail at detecting your DCS instance, you can manually add it. To do so, open the ```\manager\options.json``` file and add the location of your DCS instance, between double quotes, in ```additionalDCSInstances```. Multiple values should be separated by a comma. Use double backslashes as separators** + +Once the DCS instance is selected, you will be prompted with a series of questions which will allow you configure your installation. The meaning of all the questions and the options is explained in the Manager itself, move your mouse cursor on the info icons for more information. + +### Expert mode + +Expert mode operates more as a dashboard rather than a Wizard. All DCS instances are presented to the user, and you will be able to install/configure/remove Olympus from a single page. + +The meaning of all the options is also explained by moving your mouse cursor on the info icon. + +In Expert mode, users are also capable of starting the Olympus client and server directly from the Manager. This is convenient if you have multiple installations. Once a client/server instance is running, the Manager allows you to monitor its state directly from the Expert view. + +## Updating Olympus + +The Manager allows you to update Olympus automatically. When the Manager is started, it checks if a new version is available. If that is the case, you will be given the option to automatically update Olympus. The new package will be downloaded and installed without requiring any inputs from the user. + +The Manager will be closed and reopened after the process is completed. Once this is done, you will presented with a warning: just like installing Olympus will not automatically add it to your DCS instance, updating it will not update it in your DCS instance. By clicking on "Accept", all your Olympus instances will be automatically updated. + +## Logging into Olympus + +To login to Olympus, you need to enter a username and password. + +**The username field is used for logging purposes only and can be anything you choose. The password is the one you set during the installation.** + +If you forget a password or need to change them for security purposes, use the manager to configure it again, then restart the Olympus client\server and DCS mission. + +Please note that at the moment, ```configurator.exe``` is a feature which is not present in local installations created via the installer, but is present when Olympus is installed via any of the other methods. In order to reset the Olympus client passwords for local installations, you will need to reinstall Olympus. This will be addressed in a future update. + +You may notice there are `redCommander` and `blueCommander` passwords in the configurator. This is for missions where you would like to pit human Olympus players against one another, or have players not see everything on the other coalition. More details on this are in the "PvP Mode" section. + +# User Interface + +We have done our best to make the user interface (UI) as easy to understand as possible. Let's take a look at the overview. + +Olympus is also most optimized for the Chrome web browser. + +## Overview + +![Olympus Overview](https://github.com/Pax1601/DCSOlympus/assets/55553527/0bc2a99a-3e8d-4a8e-b2c1-6589a0d1ed16) + +### Map Options + +- **Map Tiles:** Found in the top left. Allows you to change how the map tiles look, like switching between satellite and map mode in Google Maps. Different map sources have different looks and detail based on the zoom level, so see what works best for you. + +![Map Tiles](https://github.com/Pax1601/DCSOlympus/assets/91024799/ddf28cf1-e09a-4998-a112-decd99a93cfb) + +- **Map Options:** Allows you to select what information you want displayed on the map. Notice there are key commands listed for some lines in parentheses. + +![Map Options](https://github.com/Pax1601/DCSOlympus/assets/66554898/36e5a729-1998-4259-a21e-1304a6ace2bb) + +### Show/hide options + Allows you to select what is displayed on the map. You can toggle visibility of human-controlled units, Olympus-controlled units, DCS-controlled units (i.e. units created using the mission editor and its triggers - note that taking control of these will break any link to the mission's logic), fixed-wing air units, rotary-wing air units, air defence units, naval units, ground units, airfield icons, and the three coalitions via these options. + +![Show/Hide Options](https://github.com/Pax1601/DCSOlympus/assets/55553527/aad714b6-7413-490c-8ef5-4385dced14ac) + +### The "Robot lock" +![Robot lock](https://github.com/Pax1601/DCSOlympus/assets/66554898/9af02ae4-7686-4781-8824-5fd159ad1641) + +This lock protects DCS-controlled units, which we refer to as "robots". These are the ones created and controlled by the mission editor. If any commands are given to a robot, it will become an Olympus-controlled unit and any triggers and scripts that rely on the mission having control of that unit will be broken. The mission may fail because of this - or even crash. In order to stop accidental breakage, this lock is in place. + +If you want to take control of a robot, unlock this control and give your command to the robot. It's best to place the lock back on so you don't accidentally delete your aircraft carrier! + +### Game Master Options +This shows the status and options for Olympus game master and coalition commander modes. These are intended for two or more people to compete using DCS Olympus and limit each side's visibility and ability to spawn certain units. More info in the PvP section. + +![Game Master Options](https://github.com/Pax1601/DCSOlympus/assets/91024799/3962589e-949e-4d9c-877b-95ff0f715c5e) + +### Minimap +This shows the overall theatre, an overview of units, and an orange box to represent the main map's field of view. You can click the minimap to snap to that location. + +![Minimap](https://github.com/Pax1601/DCSOlympus/assets/91024799/a21d16e4-4ccd-4ccf-9638-0600c7d99d5e) + +### Airfields +Every airfield in the area is shown with an airfield symbol, the colour of the symbol shows you which side the field belongs to, grey for Neutral, blue for Blue, and red for Red. This is live and will change if the field is overtaken in DCS. + +![Airfield](https://github.com/Pax1601/DCSOlympus/assets/66554898/50dc52db-3f32-4d02-966c-57be0d957293) + +Right-clicking on an airfield will give you an airfield overview. Hovering your mouse over a runway name (heading) and you will get the magnetic heading. Hovering over the "ILS" marker will give you the ILS frequency. You can also spawn AI hot from parking units at an airfield by clicking "Spawn". + +![Airfield summary](https://github.com/Pax1601/DCSOlympus/assets/66554898/4ab6a0c7-3f58-4ba3-acda-19bcd559d730) + +### Cursor Location Info: +This shows the location information of the mouse cursor in a variety of formats. Clicking the location formats (or pressing Z) will cycle them. + +| Full display | Lat-long | MGRS | Decimal | +|---|---|---|---| +| ![Cursor Location Info](https://github.com/Pax1601/DCSOlympus/assets/91024799/6931b4a8-9b2f-4a17-a69b-029e28e7bc7b) | ![Lat-long](https://github.com/Pax1601/DCSOlympus/assets/66554898/710f39c2-9f67-45c7-b9e2-39a69d96fcdf) | ![MGRS](https://github.com/Pax1601/DCSOlympus/assets/66554898/1160c85a-a028-47f3-a07e-0f07c4bd4c97)
[,] (comma) will reduce the accuracy
[.] (full stop) will increase the accuracy| ![image](https://github.com/Pax1601/DCSOlympus/assets/66554898/1f02a75e-9ffa-4ed5-a099-4ee4b59af4c6) | + +### Connection Status +This will show whether or not you have successfully connected to the server in question. This will work even if the server is paused, however, you cannot affect the game while it is paused. You will also see the Elapsed Time of the mission, which is how long the mission has been running. You can click this to toggle between that and Mission Time (local). + +| State | Example | +|---|---| +| Connected with elapse timed showing | ![Connected - elapsed time](https://github.com/Pax1601/DCSOlympus/assets/66554898/6b88ecc9-1e0b-439c-b58c-c327e4b4dd47) | +| Connected with location time showing | ![Connected - mission time](https://github.com/Pax1601/DCSOlympus/assets/66554898/b26952c1-2994-42fe-82a7-cf7df1063b5c) | +| Server paused (connected) | ![Server paused](https://github.com/Pax1601/DCSOlympus/assets/66554898/d831f3c1-c995-43d6-ba1a-dd1fef76d0a6) | +| Not connected | ![No Connection Status](https://github.com/Pax1601/DCSOlympus/assets/91024799/f82669ad-ed86-4385-812c-ca9296a4983c) | + +## Selected Unit Information + +When we select a unit, we will see further information and options. + +![Selected Unit Example](https://github.com/Pax1601/DCSOlympus/assets/91024799/ef2e70a2-d28b-4160-bfd5-0fb74d1460bc) + +### Selected Units Window +This window allows you to control the unit's parameters and settings. + +| | | +|:---------------------------------------------------------------------------:|-----| +| ![Selected Unit/s Name](https://github.com/Pax1601/DCSOlympus/assets/91024799/8dc319e6-5c8a-4078-b746-dc5bc10f8618) | **Selected Unit/s name**
The type is also displayed. | +| ![Flight Controls](https://github.com/Pax1601/DCSOlympus/assets/91024799/5e2f7f9e-0221-452d-81bb-8cfb5dd9e69a) | **Flight Controls**
Shows the instructed speed and altitude for the selected unit. You can toggle between ASL and AGL, as well as CAS and GS. This will grey out if multiple units are selected with differing instructed parameters. You can also see the upper and lower limits of the speed and altitude scales. | +| ![Rules of Engagement (RoE)](https://github.com/Pax1601/DCSOlympus/assets/91024799/80151289-5846-4deb-a028-c7ccbaf41d1e) | **Rules of Engagement (RoE)**
Shows the ways in which the unit will attack other units. The RoE options are:
  • Hold (Never fire)
  • Return fire (attack if attacked)*
  • Designated (default - Attack only unit designated by user)*
  • Free (Attack opposing coalition units at will)
  • *unavailable for units other than aircraft.
+| ![Reaction to Threat](https://github.com/Pax1601/DCSOlympus/assets/91024799/20794ba3-116f-485f-ab84-0c18e04f618f) | **Reaction to Threat**
Shows the ways in which the unit will behave when threatened. The options are:
  • None (No reaction to threat)
  • Maneuver (Unit will not use countermeasures, and will only attempt to kinematically avoid the threat)
  • Passive (Unit will not deviate, and will attempt to use countermeasures to defeat missiles. Unit may make last-ditch evasion attempts)
  • Evade (default - Unit will use all methods available to it to attempt to evade missiles as soon as it detects them)
  • | +| ![Delete Unit](https://github.com/Pax1601/DCSOlympus/assets/91024799/1efad12a-de6f-4f54-ad9f-ebfad0bb0738) | **Delete Unit**
    Will open a drop-down with options for removing the selected Unit from the game. Delete here cause the unit to disappear entirely. The remaining options will destroy the unit with an explosion of the type listed in the menu.
    *Caution: You CAN do this to human players; they may not appreciate this.* | +| ![Further settings](https://github.com/Pax1601/DCSOlympus/assets/91024799/3e881631-f3c7-40e5-83b6-0a9e920a9cb9) ![Image](https://github.com/Pax1601/DCSOlympus/assets/91024799/89d9cd2e-bb69-4a53-84f4-0ec7567eeaa5) ![Image](https://github.com/Pax1601/DCSOlympus/assets/91024799/570ecb95-9f8a-40f7-bdd6-6d58c26a13f9) | **Further settings**
    Further settings allow you to set an A/A (air-to-air) TACAN, Radio frequency, and change the unit's callsign. As should be obvious, these further options will vary depending on the unit type. If the unit is a tanker or AEW capable, you will see a switch for "Enable Tanker" or "Enable Airborne Early Warning". If this is set to on, then this unit will be available for human and AI AAR (air-to-air refueling) or AI AEW. More info on this later. | + +## Selected Unit +The selected unit will have a pale halo around it to show that it has been selected. You will see useful information around the icon, some of which will appear on non-selected units as well. +The Unit name appears to the left of the icon, and the unit type is seen within the icon. +The colour scheme reflects the coalition of the unit. + +![Selected Unit](https://github.com/Pax1601/DCSOlympus/assets/91024799/5ad33107-a20b-4f49-8c7d-270fe8c265b9) + +- **Action Icon**: Shown in the top left, this is an icon to let you know at a glance what that unit is doing. The cycling icon seen here is the idle icon. This unit is orbiting awaiting instruction. +- **Selection Halo**: A pale-coloured circle around the icon to indicate selection. +- **Velocity Vector**: The azimuth of the line shows what direction the unit is moving in, and the length of the icon grows with an increase in speed. +- **Fuel Gauge**: A blue bar with a white background, which is a simple representation of the unit's fuel state. The more blue bar, the more fuel. +- **Weapon Dots**: Shows the unit's weapon state. The dots from left to right show the presence of Fox 1s (e.g., AIM-7), Fox 2s (e.g., AIM-9), Fox 3s (e.g., AIM-120), Gun/other. A white dot means no weapon of that type, a filled dot means some weapons of that type. +- **Ground Speed**: Shows the unit's ground speed. +- **Flight Level**: Shows the unit's altitude above sea level in hundreds of feet. +- **Detection Lines**: Shows what other units the selected unit detects. Shown as a coloured dotted line emanating from the selected unit to the detected unit. This may be via RWR, IR, radar, and/or visually. + +# Using the Map +Interacting with the map can be done in the following ways: + +- The keyboard arrow keys - scroll the map in 2 axes +- Mouse movement with left mouse button hold - scroll the map in 2 axes +- Mouse movement with middle mouse button hold - scroll the map in 2 axes +- Left mouse button click on the mini-map - Snap to that location +- Mouse scroll wheel forward/backwards - Increase/decrease map zoom +- Keyboard or numpad +/- - Increase/decrease map zoom level +- Space will pause the view (but the mission on the server will continue) + +# Spawning Units +Spawning units in Olympus is quite simple. Perform a right-click in an empty space to bring up the spawn menu. An aircraft spawned this way will be an airstart. +You can also right-click on an airfield and select "spawn" to open the spawn menu that will start an aircraft from parking hot. + +![Spawn Menu](https://github.com/Pax1601/DCSOlympus/assets/91024799/0d76d69d-d15a-43e4-949b-7e2216b6f450) + +## Coalition +This is a three-way toggle switch that will cycle between Red and Blue. Right click this to select Neutral. While in one of those states, the units you spawn will be in that coalition. By default, the unit options are the same regardless of what coalition you choose (you can select a MiG-31 to be blue). +## Type +From left to right there is: **Fixed Wing, Rotary Wing, Air Defence, Land Unit, Effect**
    Selecting one of these options will allow the choices from those domains. E.g., click Land Unit, and the drop-down menus will consist of land units. The Effects menu is for naval units, smoke, explosions, and drawing. + +![Spawn Menu](https://github.com/Pax1601/DCSOlympus/assets/91024799/ea6787f7-b6f1-4e23-a6a3-e68079ba5774) +## Aircraft Role/Label/Loadout +These are a series of drop-down menus that will allow you to specify what exactly you want to spawn. +### Roles +Think of the roles as filters for unit and loadout. One unit may exist within multiple roles +|Domain |Roles:|Domain|Roles| +|------|------|------|-----| +|Fixed Wing|
    • AWACS
    • Antiship Strike
    • CAP
    • CAS
    • Escort
    • FAC-A
    • No Task
    • Reconnaissance
    • Runway Attack
    • SEAD
    • Strike
    • Tanker
    • Transport
    |Rotary Wing|
    • Antiship
    • Strike
    • CAS
    • Escourt
    • FAC-A
    • No task
    • Strike
    • Transport
    | +|Air Defence|
    • AAA
    • SAM Site
    • SAM Site Parts
    |Ground Unit|
    • APC
    • Artillery
    • Infantry
    • RADAR (EWR)
    • Tactical Vehicle
    • Tank
    • Unarmed
    | +|Naval Unit|
    • Aircraft Carrier
    • Cargo/Transport
    • Combatants
    • Fast Attack Craft
    • Submarine
    + +## Unit Label +Clicking on the Unit Label box will open a menu to select the specific unit. +Like an AH-64, or a Challenger 2. +## Unit Loadout +Clicking on the Unit Loadout box will open a menu to select a loadout for the unit. +If you can't see the one you want the consider trying a different role. +## Unit Group Size +Clicking on the Unit Group Size box will open a menu to select the group size for the unit. +You can create a group up to 4 units in strength. +## Advanced Options +Clicking on the Advanced Options arrow will expand the menu with advanced +spawn option for the unit. These may consist of: +- Country of Origin +- Livery +- Spawn altitude +## Info +Clicking on the Info arrow will expand the menu with information for the unit. +This may be useful for times when you aren't sure on the specifics of a unit, or what it can do. +## Deploy Unit +Once you are happy, press the Deploy Units button. The next chance Olympus gets +it will place the unit as instructed. +## Tips +The spawn menu will remember the last unit spawned so to spawn another or make +minor changes, right-click again. +Selecting unit(s) and pressing Ctrl+C then Ctrl+V will copy and paste that unit +where the cursor is positioned. This will also work with multiple units selected. + +# Selecting Units +## Single Unit +You can move your mouse cursor over a unit's icon and left click the mouse to select it. +You will notice the unit that will be selected gets a white border while you hover your cursor. +## Multiple Units +You can hold left shit and left mouse button, then drag a box over the map. +This will select any units within the box. +## Hot Groups +You can select unit(s) and create a hot group with them by pressing left ctrl +and a number along the top of your keyboard. You will then notice that number above the unit, +and at the bottom of the screen, with the unit count in the hotgroup. + +You can now press the number on your keyboard, or click the hotgroup icon at the +bottom of the screen, to select the hotgroup units collectively. + +You can create up to 9 hotgroups (1-9). +## Unit type +You can double left click a unit to select all units of that type visible on screen. + +# Moving Units +In its simplest state, moving a unit is done by selecting the unit, +then right clicking somewhere on the map to set a waypoint. +You will then see a location marker icon appear, with a line connecting the icon to the unit. + +![Moving unit](https://github.com/Pax1601/DCSOlympus/assets/91024799/d47bcb36-5f2d-458e-9102-9fcd49dcbb26) + +At any time you can right click again and set another waypoint +## Multiple Waypoints +If you hold left ctrl and then right click in multiple locations you will see +that you can create a series of waypoints. This creates a route for the unit. +![Multiple waypoints](https://github.com/Pax1601/DCSOlympus/assets/91024799/459862ee-c12d-4c20-8183-1e425dd7bae6) + +## Changing Speed and Altitude +If you wish for the unit to change speed or altitude you can do so with the sliders +in the unit info panel on the left. The unit will attempt to reach those parameters by the next waypoint. +If you want the unit to quickly reach those parameters, set the desired speed and altitude, then set a waypoint close +to the unit. + +You can also use the incremental change icons next to the unit info panel. + +![Incremental changes](https://github.com/Pax1601/DCSOlympus/assets/91024799/c64f9ec4-3e45-42ca-9bd2-bacf364598e3) + +## Halt +The halt button, below the incremental speed and altitude buttons, +will remove any orders the unit has and return it to an idle state as per the unit info panel + +## AAR/RTB +The final button, below the halt button, is the AAR/RTB button. +This will instruct the unit to proceed to the nearest AAR tanker, +and if none are available the unit will return to the nearest friendly airbase. +Note that a unit that has landed at an airbase will not be able to take off again. +This is a DCS limitation. + +## Follow Roads +For ground units, you have the option to instruct them to follow roads. +This is a toggle switch on the unit information panel. Without this on, +the unit will attempt to move in a straight line to the waypoint given. +With this on the unit will proceed to the nearest road and follow a route via roadways, +then exit the road if necessary to reach the waypoint given. + +This function might cause issues in-game and might not work all the time. +The issues can include lag that can cause the server to crash. We believe this is due to the AI follow road task being so intensive. We recommend not performing this with large amounts of unit (15+) and/or over long distances. + +![Follow roads](https://github.com/Pax1601/DCSOlympus/assets/91024799/4d451440-197a-4088-99a8-7b23614dfb45) + +## Move in Formation +If you select several units and then hold the left shift key, +you will see waypoint setting icons appear to match the formation of the +units as they currently are. If you then right click you can set a move command in this formation. + +The units will not attempt to maintain formation, this will just set waypoints +that are arranged in the same shape the units currently are. Should one +unit encounter an obstical or otherwise be delayed, the other units will +not wait and the delayed unit will not attempt to catch up. + +Additionally you can rotate this formation around it's centre by holding +left shift and moving the mouse where you want them to go, then holding +right click and dragging the pivot arm out. You can then move the mouse around +the clicked point to pivot the formation of the final waypoints. Releasing right +click will set the waypoints + +![Move in formation](https://github.com/Pax1601/DCSOlympus/assets/91024799/a511f94c-d547-4140-8bd7-3456cbcf8761) +![Move in formation2](https://github.com/Pax1601/DCSOlympus/assets/91024799/609c7118-d505-42a8-9f09-029eb1b3ac0e) +![Pivot formation](https://github.com/Pax1601/DCSOlympus/assets/91024799/b432ad38-ea47-49e4-8888-ff7554074309) + +## Following +Following instructs the unit to move with another unit at a set distance and angle. +This currently only works for air units. + +You can access the follow command by selecting the unit you want to perform the follow. +Then holding right ctrl and right clicking on the unit you wish to be followed. +This will bring up the unit action menu. Select **Follow unit.** + +![Unit action menu](https://github.com/Pax1601/DCSOlympus/assets/91024799/9b605a51-58e2-43d6-9e52-c66bf0e7a83b) + +You will then see the follow menu. You can select on the premade options or create a custom one. +The unit will do it's best to get in that position. Bare in mind the relative performance of the aircraft, whether the follow aircraft can catch up etc. This may take longer to arrange than you think. + +![Follow options](https://github.com/Pax1601/DCSOlympus/assets/91024799/46f06b34-e962-4658-bab9-8004601ed07c) + +## Land +The land command works two ways. A rotary wing aircraft can be told to attempt to land anywhere. +With interesting results. You can do this by selecting such a unit and long right clicking somewhere. +You will see a menu pop up with one option being **land here**. +Click this and the unit will attempt to land at that location. + +![land here](https://github.com/Pax1601/DCSOlympus/assets/91024799/86f9b17e-c9ed-40eb-9808-c798d720f372) + +All air units can be instructed to land at an airbase provided the airbase is either +friendly or neutral to them.
    Select the unit and control + right click on an airfield to +bring up it's menu. Select **Land here**. The unit will commit to landing there as per +the DCS AI rules. Usually this means flying to the airfield, then away for a distance, +then making an approach. + +![land here](https://github.com/Pax1601/DCSOlympus/assets/91024799/31296851-ce92-4cad-8971-623e9e34460a) + +## Air to Air Refueling + +An important feature of Olympus is the AAR (Air-to-Air Refueling), and this has +been made easy. + +1. To refuel an aircraft, we first need a tanker. +You can spawn it using the default spawn menu. After spawning a tanker, select it and toggle "Enable Tanker" to on. + +![Unit Menu](https://github.com/Pax1601/DCSOlympus/assets/55553527/bc0626dd-f016-4fb5-9678-6fd6632edceb) + +2. Click on settings, and change the TACAN, Radio Frequency, +and the Callsign as desired. (The Callsign doesn't work yet V1.0) + +![Tanker Option](https://github.com/Pax1601/DCSOlympus/assets/55553527/99a2ad02-229b-4c99-905f-7e1c454cfd76) + +3. Now, you can either use the F-10 commands if a player wants to refuel or +instruct an AI to refuel with the "Send to tanker" option in Olympus. + +![Flight Options](https://github.com/Pax1601/DCSOlympus/assets/55553527/1009be0b-0d6c-49b5-b68e-504fb0863c74) + +When the tanker is acting as a tanker, its icon will be displayed as a fuel +nozzle. The AI aircraft that wants to refuel will have the icon of a fuel pump. + +![AAR Icons](https://github.com/Pax1601/DCSOlympus/assets/55553527/56b27c64-9f8d-4187-9bac-48dfa2cff6ba) + +### Known AAR Issues + +The AAR is still not perfect and has issues due to DCS limitations. + +When giving the tanker new tasks such as: + +- Setting a new waypoint +- Changing speed +- Changing altitude +- Landing + +While refueling, the tanker will momentarily reset its task. +This will cause it to reject any AI or player attempting to refuel at that +moment. This means that the "inbound" communications menu command needs to be executed +again by any players in the process. +In addition, you will also have to instruct the tanker to resume its role +as a tanker in Olympus. + +When players are talking to the tanker via the communications menu commands, giving Olympus commands to the tanker can cause that tanker to +become unresponsive for a short period. + +# Firing and Combat + +## Combat Ranges + +Ground units have preset ranges defined, these ranges can be found in +the Database Manager and serve different purposes. +More on the database manager later. + +![Combat Rings](https://github.com/Pax1601/DCSOlympus/assets/55553527/b3d32354-899d-4b0c-b4e8-f07365fa00c1) + +**Acquisition range: Outer Black Circle** + +The range within which the unit detects hostiles. + + +**Engagement range: Inner White Circle** + +The range within which the unit utilizes our simple Olympus targeting logic. +Uses DCS fire at point. +(Low Probability of Kill). + +**Aim method range:** + +The range within which the unit engages hostiles using an improved and +longer ranged DCS targeting system (Medium Probability of Kill). + +**Targeting range:** + +The range within which the unit utilizes the normal DCS engagement logic, +only when using the small scatter option. +(High Probability of Kill). + +## Attacking + +There are multiple ways in which a unit can attack or engage units. In this section, +we'll take a look at the ground units and aircraft attack modes. + +### Ground Units + +When a ground unit is selected, you can long press the right-mouse button over location or point you'd like to +target and then you'll then be able to see the three options. This must bare ground and not another unit. + + +#### Targeting a point or area + +![Targeting Area](https://github.com/Pax1601/DCSOlympus/assets/55553527/cb5e6cc2-cf3c-47e1-8a8f-f7f5a3f2d02c) + +- **Group ground units:** Groups the units in Olympus. When grouped, you can give a command to only one unit, +and the all grouped units will follow it. + +- **Fire at area:** Fires at a point using the DCS logic to hit the designated point. Laser accurate. + +- **Simulate fire fight:** Uses Olympus logic to simulate a firefight, where the unit shoots small arms fire within the two displayed brackets. + +![Simulate Fire Fight](https://github.com/Pax1601/DCSOlympus/assets/55553527/5d0c7ead-ab1d-460e-9fa4-b127436e8fdf) + +For the **Simulate fire fight**, additional options can be selected. + +![Simulate Fire Fight scatter](https://github.com/Pax1601/DCSOlympus/assets/55553527/2201eaa5-17fd-4815-adc3-2ccc4958fd8d) + +The **Shots scatter** dictates how big the angle within the brackets should be, and the **Shots intensity** dictates how +many times the unit fires within a given time period. + +#### Targeting a unit + +With a unit selected, and ctrl+right clicking on another unit, additional options become available. You can also access these options by ctrl+right clicking on the unit itself. + +![Target Options](https://github.com/Pax1601/DCSOlympus/assets/55553527/c0e5f97f-fa6a-46c3-bcf3-4ae28a9dfc08) + +Group ground units is the same as above. + +- **Attack unit:** Utilizes DCS targeting logic to engage the target. + +Both AAA options are only available with units that can act as AAA (mainly vehicles with guns of 30mm calibre and smaller), and these two options only work for neutral units. +A neutral unit can act as part of the red or blue coalition. + +- **Scenic AAA:** Fires into the air when no target aircraft is present and will start to aim if the aircraft approaches. +(Used for cinematic effects) + +- **Dynamic accuracy AAA:** Fires at the closest hostile aircraft but doesn't aim precisely. + +- **Center map:** Centers the target in the middle of the screen/Olympus client. + +### Aircraft + +Aircraft also have two engagement modes: one for Air-to-Air (A/A) and another for Air-to-Ground (A/G). + +#### Air-to-Air Engagement + +![air to air](https://github.com/Pax1601/DCSOlympus/assets/55553527/815acbdc-cace-463c-940a-104b8c59c42a) + +- **Attack unit:** Engages the unit using DCS engagement logic (e.g., Fox 3 from afar, Fox 2 and guns from close range). + +- **Follow unit:** Refer to the [Following](#following) section. + +- **Refuel:** Refer to the [AAR/RTB](#aarrtb) or [Air to Air Refueling](#air-to-air-refueling) section. + +- **Center map:** Refer to the previous chapter. + +#### Air-to-Ground Engagement + +If you target a unit on the ground, you'll get the same options as when attacking an aircraft. +You'll also get an additional option to Group Ground Units. + +However, if you decide to attack an area or point on the map, such as a static object, you get two options. + +![air to ground](https://github.com/Pax1601/DCSOlympus/assets/55553527/a6355dd6-34d2-4156-b9d6-a8b568fa9954) + +- **Precision bombing:** Bombs the point selected by the cursor using DCS bombing logic. Usually one bomb. + +- **Carpet bombing:** Carpet bombs the point or area selected by the cursor using DCS carpet bombing logic. + +There is currently an issue with carpet bombing. If the bombers are within the same flight, +only the first bomber will carpet/bomb the target. A workaround is to spawn the bombers in separate flights; +this will bypass the issue. + +### Unit Active State + +A unit can be in one of two states: active or inactive. + +Active units function as normal, meaning they can perform tasks and detect what is happening around them. If a unit is inactive, the AI controlling the unit will be dormant and ignore everything happening until the unit is activated again. This feature is applicable only to surface units, including ships. + +You can toggle the active state of a unit in the unit control page. + +![active unit](https://github.com/Pax1601/DCSOlympus/assets/55553527/f7cb4614-e6fd-424a-86be-740193a7198b) + +# Polygon Draw Mode +## Creating a Polygon +This mode is used to draw a polygon onto the map, which can either be left as a polygon or used to indicate an area to populate with air defense. + +Access this mode with a right click on an empty portion of the map to bring up the create unit menu, and the select the plus symbol. + +![Spawn Menu Plus](https://github.com/Pax1601/DCSOlympus/assets/91024799/87899d48-c7f1-47b9-bd22-26d28c70aa14) + +This will open a lower menu, the right most icon of which is the polygon draw mode. Select this. Your cursor will become a pen icon. + +![Polygon Cursor](https://github.com/Pax1601/DCSOlympus/assets/91024799/41609408-fedb-4c94-9c1a-2ecccc1c0154) + +Your next left click with place a point that becomes a corner on the polygon. Each succesive click adds another corner. + +![Polygon Draw](https://github.com/Pax1601/DCSOlympus/assets/91024799/66d79c98-15da-4456-abe0-da434a69b90d) + +Right click when you have finished drawing your polygon. + +## Editing a Polygon +Right click on the polygon to bring up a unit menu with a pen icon. Select the pen icon to enter edit mode + +![Polygon Edit](https://github.com/Pax1601/DCSOlympus/assets/91024799/36f63bbb-17f4-4532-bc10-3d7096babfd4) + +The large white circles on the corners can be dragged around with the left mouse button.
    The small white circles on the edges on the polygon can be left clicked to transform them into corners. + +## IADS Creation + +The IADS creation tool will use your selected criteria to populate the land under the polygon with an air defence system. + +**This system is meant for larger areas. Think 40nm2 areas or greater. It will also focus these around built up areas and airbases.** + +While in polygon edit mode, right click within the polgyon to open the IADS creation menu. +
    The coalition toggle in the top left will define the coalition the spawn air defence will take (This is done after having the polygon already drawn). +
    You can use the drop down menus to filter the types of air defence units you wish to include in the IADS spawn. +
    The IADS Density slider will control how many units you will create. The higher the slider the more units. +
    The IADS Distribution slider will control how clumped together the units will be. The higher the slider the less clumped together. +
    The Force Coalition checkbox will control whether or not the units you spawn will be from all countries, or just the countries chosen in with the coalition toggle. Checking the box will enforce only units from those countries. + +Select the Add Units button when complete to command Olympus to create the units. Depending on the size of the polygon this make take a minute or two. + + +![IADS 1](https://github.com/Pax1601/DCSOlympus/assets/91024799/129659b0-f815-456a-b037-63bf8089324a) + +# RTS Mode + +You can sign into Olympus in one of three roles: + +- Game Master +- Blue Commander +- Red Commander + +The Game Master can set up the rules of the RTS mode and can see and control all units, regardless of coalition. + +Both Blue and Red Commanders can only control their respective units and can only see hostile units if their own units detect them. + +The RTS Mode is still not fully fleshed out and developed and will face major changes at a later date; smaller functions still +need to be written and updated. + +## Game Master Rules + +As the Game Master, you have the ability to set rules. These rules can be found under "Game Master Settings." + +![Game master setting](https://github.com/Pax1601/DCSOlympus/assets/55553527/6b32badd-8355-42d3-8e5d-d2b02de33abf) + +Once you open the settings, this window will appear. + +![Inside of game master settings](https://github.com/Pax1601/DCSOlympus/assets/55553527/4149fcbf-59f7-448b-8622-78a061f27a6b) + +- **Restrict spawns:** The name may be misleading; this box has to be enabled for the latter settings to be applied. + +- **Restrict units to coalition:** Disables the ability to spawn Redfor units for the Blue Coalition and vice versa. + +- **Setup time:** The time during which coalition commanders can prepare the units in the air and on the ground until the spawn +is restricted. For example, you can only spawn aircraft at airbases. + +- **Available eras:** Only allows spawning units of a specific era. + - Early Cold War + - Mid Cold War + - Late Cold War + - Modern + - WW2 + +- **Color Spawn point:** Currency for spawning units for each coalition. + +The spawn point can be customized in the Database Manager and should be changed. + +Once you press apply, the changes should then be applied. + +As the blue or red commander you'd be able to see this + +![blue coalition cost](https://github.com/Pax1601/DCSOlympus/assets/55553527/1b16f1b8-3dff-45c8-b076-0379ff88414f) + +And as you spawn units, you also be able to see the cost. + +![blue unit cost](https://github.com/Pax1601/DCSOlympus/assets/55553527/3db5db72-a987-4262-badb-2177bbfbff2b) + +# DatabaseManager + +The DatabaseManager is a part of Olympus that manages the units and their data and information, such as loadouts. + +The DatabaseManager can be found under Main Menu. + +![Main Menu](https://github.com/Pax1601/DCSOlympus/assets/55553527/75823f57-f6c4-4ce0-94c6-49b8981db52e) + +The DatabaseManager consists of 4 databases: + +- Aircraft Database +- Helicopter Database +- Ground Unit Database +- Navy Unit Database + +Units are not saved in a Database directly, but in separate JSON files. These JSON files can be found at the following URLs: + +- **https://SERVER_IP:3000/databases/units/AircraftDatabase.json** For aircraft +- **https://SERVER_IP:3000/databases/units/HelicopterDatabase.json** For helicopter +- **https://SERVER_IP:3000/databases/units/GroundUnitDatabase.json** For ground units +- **https://SERVER_IP:3000/databases/units/NavyUnitDatabase.json** For navy units + +Let's take a look at how the DatabaseManager functions for different types and how to add new units. + +## Aircraft and Helicopter Database + +The aircraft and helicopter databases function the same way, as both have the same option and both are unit types with loadouts. + +The loadouts are retrieved using a Python file that takes them straight from their manifest/location where they're defined. + +![Aircraft Database](https://github.com/Pax1601/DCSOlympus/assets/55553527/89744d91-1d31-49cc-b99e-741ca5d583fc) + +- **Unit List:** A list of all the units currently in the database. + +- **Check Box:** The checkbox next to the name in the Units Lists enables or disables units to be used in Olympus + +- **Name:** The name used to reference units between Olympus and DCS. + +- **Label:** The label displayed in Olympus; this can be changed as desired. + +- **Short label:** The label displayed on the icon once the unit is spawned. + +- **Coalition:** The unit's coalition. This is used for the RTS Rule, allowing only the blue or red commander to spawn their +respective units. + +- **Era:** The era when the unit is used. This is also used for the RTS Rule, where the blue and red commanders can only spawn units +from certain eras. + +- **Filename:** The icon of the unit used in the spawn menu. The images are saved under +**DCS.openbeta\Mods\Services\Olympus\client\public\images\units**. + +- **Cost:** The cost of the unit, also used for the RTS Rule. + +- **Can target point:** Allows the units to precision bomb a point or area. + +- **Description:** The description of the unit; this will also be displayed in the spawn menu. + +- **Tags:** Tags for the unit; these will also be displayed in the spawn menu. + +- **Loadouts:** The place where the loadouts are defined. + +When you click on a loadout, the **Loadout properties** will appear. + +### Loadout properties + +- **Name:** The name of the loadout displayed in Olympus. + +- **Code:** A reference to the DCS payloads. + +- **Roles:** The role for the current loadout. + +- **Name** and **Quantity**: "Name" corresponds to the payload, and "Quantity" to how many of that type you carry. + +## Ground Unit Database + +The Ground Unit Database lacks the loadout options found in the Aircraft and Helicopter Databases, but it includes other features. + +![Ground Unit Database](https://github.com/Pax1601/DCSOlympus/assets/55553527/177cc6d1-0f07-49bb-b988-5ccd97f050be) + +The parameters up to **Acquisition range [m]** are the same as in the Aircraft and Helicopter Databases. + +- **Acquisition range [m]:** The distance within which the unit can detect hostiles. + +- **Engagement range [m]:** The distance within which the unit engages targets using our simple Olympus targeting logic. +It utilizes the DCS fire-at-point feature. + +- **Aim method range [m]:** The range within which the unit engages hostiles using a improved and +loger range DCS targeting system. + +- **Targeting range [m]:** The range within which the unit utilizes the normal DCS engagement logic, +only when using the small scatter option. + +- **Barrel height [m]:** The height of a gun or tank barrel, used in calculating the Olympus Simulate Fire Fight logic. + +- **Muzzle velocity [m/s]:** The muzzle velocity of small arms, including those mounted on tanks and APCs. + +- **Aim time[s]:** The time it takes for a ground unit to aim. + +- **Shots to fire:** The number of shots fired before a brief pause. + +- **Shots base interval[s]:** The duration of the brief pause between shots. + +- **Shots base scatter[*]:** The angle of scatter. + +- **Alertness time constant[s]:** The time it takes for the unit to become active after detecting a hostile unit. + +- **Can target point:** Allows the unit to target a specific point, such as for artillery strikes. + +- **Can rearm:** Enables a unit to rearm if its ammunition is depleted. + +- **Can operate as AAA:** Allows the unit to engage aircraft. + +- **Indirect fire (e.g. mortar):** Enables the unit to conduct indirect fire, useful for simulating firefights. + +- **Description:** Similar to the aircraft database. + +- **Tags:** Similar to the aircraft database. + +- **Marker file:** The icon displayed on ground units once spawned. + +## Navy Unit Database + +The naval aspect is the least modified in Olympus as of the release. Currently, the options are similar to those for ground units, but barrel height and muzzle velocity do not apply here. + +![Navy Units Database](https://github.com/Pax1601/DCSOlympus/assets/55553527/3711ef3f-086e-44f8-a8b2-3d96888b77cc) + +## Adding Mods to the Database + +We enable users to add mods to all unit categories in Olympus. + +The process for adding these mods will vary. + +For all mods, they must already be installed on the server, or on your machine if you're running Olympus locally. + +### Adding Ground/Navy Unit Mods + +Adding Ground and/or Navy Units is relatively straightforward. + +In this example, we will add the mod for the WW2 Zuikaku Japanese Aircraft Carrier to the Navy Unit Database. + +1. Find the reference ID/Name for the Mod. The easiest way is to go into the DCS Mission Editor and locate the unit there. + +![Mission Editor Zuikaku](https://github.com/Pax1601/DCSOlympus/assets/55553527/ac6b4f7c-9353-41a2-930a-9b37a0711a9a) + +2. Navigate to the corresponding Database, enter the ID/Name in the 'Add' field, and click "Add." + +![Unit List Zuikaku](https://github.com/Pax1601/DCSOlympus/assets/55553527/b590e769-6383-4e37-8651-bbfb90f31807) + +3. Once the unit is added, fill in all the required information. For the type, refer to the [Unit List](#roles). + +![Unit Properties Zuikaku](https://github.com/Pax1601/DCSOlympus/assets/55553527/4dfb4605-b2f3-4943-bd4b-486421e9b865) + +4. After entering the information, click "Save" and refresh your browser. + +![Save Button](https://github.com/Pax1601/DCSOlympus/assets/55553527/1234138a-585c-4052-add5-02f70315a15a) + +5. Attempt to spawn the unit in the game. If the previous steps were correctly followed, +you should be able to find and spawn the unit successfully. + +![Create Zuikaku](https://github.com/Pax1601/DCSOlympus/assets/55553527/18c58c20-ba7e-4810-bc4b-dd7f31b119af) + +### Adding Aircraft Mods + +**Before editing any Olympus files, we strongly recommend that you back them up.** + +This is a little more complicated due to the need to add loadouts. We strongly suggest that you do not attempt this unless if you are familiar with both using .json and .lua files to store and access data, or are otherwise proficient in at least one programming language. + +1. Create a mission file with the aircraft in question. Let's use the popular and excellent A-4 as the example. Make sure to name it something that you can find with CTRL+F. + +![Add A4 Skyhawk in Mission Editor](https://github.com/Pax1601/DCSOlympus/assets/131475927/3a50e780-ea8d-4dc8-b93c-8cdc2b8717fe) + +2. Give it a loadout you want to add. It does not need to be a default loadout. + +![Select Loadout](https://github.com/Pax1601/DCSOlympus/assets/131475927/60ea8070-aa4b-4d55-b346-b33e4f5319fc) + +3. Open up the .miz file with 7zip. The file should be located in [DCS Installation Drive]:\Users\[Your Username]\Saved Games\DCS.openbeta\Missions + +![miz file archive](https://github.com/Pax1601/DCSOlympus/assets/131475927/a15bf081-0786-419b-a7b1-0ef25260ade2) + +4. Open up the mission file in the .miz file in a text editor and use CTRL+F to search for the aircraft you spawned using the Mission Editor. + +![Text editor a4](https://github.com/Pax1601/DCSOlympus/assets/131475927/497bb3f4-2c0a-41f4-ab19-6e6b3ea5b225) + +5. Go to the following file in your Olympus install: [DCS Installation Drive]:\Users\[Your Username]\Saved Games\DCS.openbeta\Mods\Services\Olympus\Scripts\unitPayloads.lua. + +Note the structure of how aircraft + payloads are stored. This file is where the loadouts get pulled from. + +![Unitpayloads.lua](https://github.com/Pax1601/DCSOlympus/assets/131475927/fc4d5dc8-b36b-49a1-b4d0-3d8b7143f9d5) + +6. Go to the bottom of the file, and add the loadout. Note the structure: + +["Aircraft Name"]={["Name of Loadout"]={[1] = {["CLSID"]="{LAU3_FFAR_MK1HE}"}, + [2] = {["CLSID"]="{LAU3_FFAR_MK1HE}"}, + [3] = {["CLSID"]="{DFT-300gal}"}, + [4] = {["CLSID"]="{LAU3_FFAR_MK1HE}"}, + [5] = {["CLSID"]="{LAU3_FFAR_MK1HE}"}}}, + +The parts in the curly braces after the {["Name of Loadout"]} (the payload CLSIDs) - You need to get that from the .miz file as shown at step 4 above. The Aircraft Name MUST BE IDENTICAL to the ["Type"] in the .miz file. The added loadout should look like so: + +![Add payload](https://github.com/Pax1601/DCSOlympus/assets/131475927/1ad2dc8e-bc4e-47ed-ad35-87945b91ab92) + +7. Launch the Mission and open up Olympus, and like with ground units, open up the database manager, and add the unit using the exact name as what you found in the .miz file: + +![Add A-4 in database manager](https://github.com/Pax1601/DCSOlympus/assets/131475927/aee0c6f6-d847-4756-a3c4-db7f00e8f97f) + +8. Enter the unit details: + +![A-4 Details](https://github.com/Pax1601/DCSOlympus/assets/131475927/d9e549e5-8d9d-4177-8262-40554ccc1fb9) + +9. Go to [DCS Install Drive]:\Users\[Your Username]\Saved Games\DCS.openbeta\Mods\Services\Olympus\client\public\databases\units\aircraftdatabase.json and open it in a text editor. Search for your newly added aircraft, it should look like this: + +![A-4 in aircraftdatabase.json](https://github.com/Pax1601/DCSOlympus/assets/131475927/c6321aed-eee4-4a5c-9f2a-09cc70c7b22c) + +10. Add your loadout. The code MUST MATCH the name of loadout in unitpayloads.lua, as that is what is looked up to determine the loadout, like so: + +![A-4 Added Loadout](https://github.com/Pax1601/DCSOlympus/assets/131475927/9de5570b-c9b7-4d36-abf7-a84244427507) + +The payload listed under "items" does not affect what is actually on the aircraft. It is there to present to the user what weapons are loaded on the aircraft. The authoritative source on what is actually going to be on that aircraft is the payload that shares the name with what you entered under "code" in unitpayloads.lua. If there is no such loadout in unitpayloads.lua, the aircraft will spawn with no loadout. + +You should now be able to spawn your aircraft mod with some weapons on it! + +We recommend that you **SAVE** your modified unitpayloads.lua and aircraftdatabase.json files as Olympus updates **MAY** overwrite these. + + + + + + + + + + + + + diff --git a/frontend/check_setup.bat b/frontend/check_setup.bat new file mode 100644 index 00000000..f3f8e6f0 --- /dev/null +++ b/frontend/check_setup.bat @@ -0,0 +1,10 @@ +@echo off + +echo check_setup starting... +if exist "setup" ( + echo setup.bat has already been called, skipping... +) else ( + echo setup.bat has not been called yet, installing! + call .\setup.bat +) +echo check_setup completed! \ No newline at end of file diff --git a/frontend/server/.vscode/extensions.json b/frontend/server/.vscode/extensions.json new file mode 100644 index 00000000..0966999c --- /dev/null +++ b/frontend/server/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "rioj7.command-variable" + ] +} \ No newline at end of file diff --git a/frontend/server/.vscode/launch.json b/frontend/server/.vscode/launch.json new file mode 100644 index 00000000..c5c4d9ed --- /dev/null +++ b/frontend/server/.vscode/launch.json @@ -0,0 +1,42 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch Server (DCS)", + "skipFiles": [ + "/**" + ], + "args": ["--config", "${input:enterDir}/Config/olympus.json"], + "program": "./bin/www", + "preLaunchTask": "copy" + }, + { + "type": "node", + "request": "launch", + "name": "Launch Server (No DCS)", + "skipFiles": [ + "/**" + ], + "args": ["--config", "${input:enterDir}/Config/olympus.json"], + "program": "./bin/www", + "preLaunchTask": "demo-server" + } + ], + "inputs": [ + { + "id": "enterDir", + "type": "command", + "command": "extension.commandvariable.promptStringRemember", + "args": { + "key": "dir", + "description": "DCS Saved Games folder (leave default for mock dcs)", + "default": "../../mock-dcs" + } + } + ] +} \ No newline at end of file diff --git a/frontend/server/.vscode/tasks.json b/frontend/server/.vscode/tasks.json new file mode 100644 index 00000000..f71a20f2 --- /dev/null +++ b/frontend/server/.vscode/tasks.json @@ -0,0 +1,45 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "check-setup", + "type": "shell", + "command": "cd .. ; ./check_setup.bat", + "isBackground": false + }, + { + "label": "demo-server", + "type": "shell", + "command": "./scripts/demo-server.bat", + "args": ["${input:enterDir}/Config/olympus.json"], + "isBackground": true, + "dependsOn": ["check-setup"], + "problemMatcher":{ + "owner": "custom", + "base": "$tsc-watch", + "background": { + "activeOnStart": true, + "beginsPattern": "Please wait", + "endsPattern": "Waiting for connections..." + } + } + }, + { + "label": "copy", + "type": "shell", + "command": "./scripts/copy.bat", + "isBackground": false, + "dependsOn": ["check-setup"], + } + ], + "inputs": [ + { + "id": "enterDir", + "type": "command", + "command": "extension.commandvariable.remember", + "args": { "key": "dir" } + } + ] +} \ No newline at end of file diff --git a/client/app.js b/frontend/server/app.js similarity index 85% rename from client/app.js rename to frontend/server/app.js index f82384a9..b07fe860 100644 --- a/client/app.js +++ b/frontend/server/app.js @@ -10,12 +10,12 @@ module.exports = function (configLocation) { /* Default routers */ var atcRouter = require('./routes/api/atc'); var airbasesRouter = require('./routes/api/airbases'); - var elevationRouter = require('./routes/api/elevation'); + var elevationRouter = require('./routes/api/elevation')(configLocation); var databasesRouter = require('./routes/api/databases')(path.join(path.dirname(configLocation), "..", "Mods", "Services", "Olympus", "databases")); var indexRouter = require('./routes/index'); var uikitRouter = require('./routes/uikit'); var usersRouter = require('./routes/users'); - var resourcesRouter = require('./routes/resources'); + var resourcesRouter = require('./routes/resources')(configLocation); var pluginsRouter = require('./routes/plugins'); /* Load the config and create the express app */ @@ -31,9 +31,11 @@ module.exports = function (configLocation) { } var app = express(); + var backendAddress = config["backend"]["address"]; + /* Define middleware */ app.use(logger('dev')); - app.use('/olympus', createProxyMiddleware({ target: `http://${config["server"]["address"]}:${config["server"]["port"]}`, changeOrigin: true })); + app.use('/olympus', createProxyMiddleware({ target: `http://${backendAddress === '*'? 'localhost': backendAddress}:${config["backend"]["port"]}`, changeOrigin: true })); app.use(bodyParser.json({ limit: '50mb' })); app.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); app.use(express.static(path.join(__dirname, 'public'))); diff --git a/client/bin/demo b/frontend/server/bin/demo similarity index 85% rename from client/bin/demo rename to frontend/server/bin/demo index 9abe83f1..b9cc8d3e 100644 --- a/client/bin/demo +++ b/frontend/server/bin/demo @@ -1,3 +1,10 @@ +const yargs = require('yargs'); +var fs = require('fs'); + +/* Define configuration parameter */ +yargs.alias('c', 'config').describe('c', 'olympus.json config location').string('rp'); +args = yargs.argv; + console.log('\x1b[36m%s\x1b[0m', "*********************************************************************"); console.log('\x1b[36m%s\x1b[0m', "* _____ _____ _____ ____ _ *"); console.log('\x1b[36m%s\x1b[0m', "* | __ \\ / ____|/ ____| / __ \\| | *"); @@ -10,16 +17,17 @@ console.log('\x1b[36m%s\x1b[0m', "* |___/ console.log('\x1b[36m%s\x1b[0m', "*********************************************************************"); console.log('\x1b[36m%s\x1b[0m', ""); console.log("Please wait while DCS Olympus DEMO Backend Server starts up..."); +console.log(`Config location: ${args["config"]}`) var fs = require('fs'); -let rawdata = fs.readFileSync('../olympus.json'); +let rawdata = fs.readFileSync(args["config"]); let config = JSON.parse(rawdata); /** * Module dependencies. */ -var app = require('../demo'); +var app = require('../demo')(args["config"]); var debug = require('debug')('client:server'); var http = require('http'); @@ -28,11 +36,11 @@ var http = require('http'); */ var configPort = null; -if (config["server"] != undefined && config["server"]["port"] != undefined) { - configPort = config["server"]["port"]; +if (config["backend"] != undefined && config["backend"]["port"] != undefined) { + configPort = config["backend"]["port"]; } -var port = normalizePort(configPort || '3000'); +var port = normalizePort(configPort || '3001'); app.set('port', port); console.log("Express server listening on port: " + port) diff --git a/client/bin/www b/frontend/server/bin/www similarity index 82% rename from client/bin/www rename to frontend/server/bin/www index 75c4c783..7be11021 100644 --- a/client/bin/www +++ b/frontend/server/bin/www @@ -20,15 +20,12 @@ console.log("Please wait while DCS Olympus Server starts up..."); console.log(`Config location: ${args["config"]}`) /* Load the configuration file */ -var clientPort = 0; +var httpPort = 0; if (fs.existsSync(args["config"])) { var json = JSON.parse(fs.readFileSync(args["config"], 'utf-8')); - clientPort = json["client"]["port"]; + httpPort = json["frontend"]["port"]; } else { console.log("Failed to read config, aborting!"); - - /* Wait a bit before closing the window */ - await new Promise(resolve => setTimeout(resolve, 3000)); return; } @@ -38,7 +35,7 @@ var debug = require('debug')('client:server'); var http = require('http'); /* Normalize port */ -var port = normalizePort(clientPort); +var port = normalizePort(httpPort); app.set('port', port); console.log("Express server listening on port: " + port) @@ -50,6 +47,21 @@ server.listen(port); server.on('error', onError); server.on('listening', onListening); +/* Optional https support */ +var https = null; +var credentials = null; +var httpsServer = null; +if (json["frontend"]["https"] === true){ + https = require('https'); + var privateKey = fs.readFileSync(json["frontend"]["keyPath"] ?? "./cert/default.key", 'utf8'); + var certificate = fs.readFileSync(json["frontend"]["certPath"] ?? "./cert/default.crt", 'utf8'); + var httpsPort = json["frontend"]["httpsPort"] ?? 3433; + credentials = {key: privateKey, cert: certificate}; + httpsServer = https.createServer(credentials, app); + httpsServer.listen(httpsPort); + console.log("Express server listening on SSL port: " + httpsPort) +} + /* Normalize a port into a number, string, or false. */ function normalizePort(val) { var port = parseInt(val, 10); diff --git a/frontend/server/cert/default.crt b/frontend/server/cert/default.crt new file mode 100644 index 00000000..e8a3d10e --- /dev/null +++ b/frontend/server/cert/default.crt @@ -0,0 +1,21 @@ +-----BEGIN CERTIFICATE----- +MIIDazCCAlOgAwIBAgIUJj3UsO7kZ2w0ERm2kq5vBKvHskIwDQYJKoZIhvcNAQEL +BQAwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgMClNvbWUtU3RhdGUxITAfBgNVBAoM +GEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0yNDAzMTExNjQzMzNaFw0yNTAz +MTExNjQzMzNaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEw +HwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCPPhx02xZ6Bboi6+DeHPxxBUzwFwIpUt7idfqnEp1Q +r+A2c7DEQJNZs8C8kP6p4Qlg1WcP9MuKDo63Ak06tN5C5RrRZHDsA0fGqcZFeFcL +vhENO+1xf+1198GKqNhrK8vcB7aYEUy1Ms70bsb1OtG3qKIY966tiHzGFHI6oAgE +M8Q/0dQRXIHIknXYt+j7GpgSRieX+5TbJ9nXhKg56XLIF+iaIOS4vPbAdXlGGyh2 +ZIZS3qKqb9MzJHnDKpjDR9GUHmLlGvWto7djFHFZ3SqNwUOKJ9HO+iRxMjCqHHGt +2ox0aVnNNMUYCKIfevEtx1sMWXQhLFy9rK2A3rg+HLSTAgMBAAGjUzBRMB0GA1Ud +DgQWBBQnWAJizPDzLS0y/sdpdYZ0ynjfnjAfBgNVHSMEGDAWgBQnWAJizPDzLS0y +/sdpdYZ0ynjfnjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCO +nwXCddhwW3SpXI2Khwj+A0r2919yrBsFoAYXXhFIIzwbCU4lj5eure8AfwYoyb6/ +09m0d6Vo4Y3jmNCOS30s8udbKki3lV9DrOcdVhVs4OszTb/mFIZBZpipZgHgG4eM +74k/4Ai3j6CUZSZzr8eM6Tr1NByTiD8f3TsTKloxkU3POtAZxlItjl6+8S4RDbTK +POQktsz2vEgX0yH0DfKORK/1mg/VyxSWuDCAzePyVWe/TGIh+vch8A/QVruTgZ8u +f8T0Fi//N5kp/5+pNl7NCO+gH4a1vGAs6OcYe83bS4HXCznWdqMMrqQ5xEJa88R6 +y6UogPzVmw7nLW0cQb3L +-----END CERTIFICATE----- diff --git a/frontend/server/cert/default.key b/frontend/server/cert/default.key new file mode 100644 index 00000000..095489d3 --- /dev/null +++ b/frontend/server/cert/default.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCPPhx02xZ6Bboi +6+DeHPxxBUzwFwIpUt7idfqnEp1Qr+A2c7DEQJNZs8C8kP6p4Qlg1WcP9MuKDo63 +Ak06tN5C5RrRZHDsA0fGqcZFeFcLvhENO+1xf+1198GKqNhrK8vcB7aYEUy1Ms70 +bsb1OtG3qKIY966tiHzGFHI6oAgEM8Q/0dQRXIHIknXYt+j7GpgSRieX+5TbJ9nX +hKg56XLIF+iaIOS4vPbAdXlGGyh2ZIZS3qKqb9MzJHnDKpjDR9GUHmLlGvWto7dj +FHFZ3SqNwUOKJ9HO+iRxMjCqHHGt2ox0aVnNNMUYCKIfevEtx1sMWXQhLFy9rK2A +3rg+HLSTAgMBAAECggEABiHFCxWT5T5YhQUu96MrBVWSQRbjD0zOYMhnJf7MgDc/ +NGWIdCZFiIoC3q+gTzpkceJAyrSSgAL2hgwRrUkv2JJBLySLFvde+7ip1bB8nXKR +/UyK8hhlXG7yOJLYzOGvlOg5n1HiREF8DYeuebH+Z0vPQJ1du20D1mDqsOrH3RIf +18P2iYwSNsUgC4PcUralaeyYo/CRUT7tFzpVBjv4bullhbXdbzaqyZkE6NreoslV +pOOQK37d1lgI17qJzMduyRNqxoKX20jzu4aTFQR4q5AH5uJ1BSX7XUQe2y5436qj +HXFGPlp5j9gGxvq6lr606jczAGnGspn2BF2G0C0+CQKBgQDBCJOYskKesIdkroWc +5CxrfBcui0bJiNsy9IUEm71SwEIS2oTCQCJU0dF7swxAP4PW9yXO0eD9u35G+Emg +HsnHBpi2kycgDsvchhD9w+keRc+YIR2qSoGuI0YXgo3VKgF3ep4Ru3IXHHmb/L37 +j1+Qdx9ULunEWA7y2/7Cu083uQKBgQC997SlW03rxu/v7/FAT8gQ4tT+v9r1Z4nN +yl5JjHhwnVE1x1SsV3ikXyss/W3xsKcRP5konHeI74RT8Aczvj/B9pPI40duVlzw +w+RTXcjTBNt/zQQj/qc565o8iB1R/06tN87eb8XhjhjYU/dxrLRhbNa8BJ8crIxK +JkMtJ4xcqwKBgQCV2o+igfif8xEYwzdsxeIKC0p/0pXAjOMGWrcNDc5a+HAS7NsV +Ze6BBGXo7uW61tQFxNXwChTtRWnRtJyLlns0a9WQHwrHo1T1vIpiRn2qB64SPtsl +wTONOUsHo01yR2reEy21PFxkvrFVvE7MhNA+eYuzsbu+tlHcjZboG7ty2QKBgBPv +0Tehc3YRNNE7n1geh2KuS6hIvlQO/7lnSanyYhl/iSxZtRs5OuIVUtSv7D/3SDFZ +OVu3wBvQ91RP1pGpn8tdc3kb0T1VNv/VrzrIlvD+i4LII20bprU/crpzlpAqeTlY +qA9UL7JSVW0ussNtWqj24TpuSbyap0aI6XfttJ9tAoGANdZ+MCSVOoLiur5twgZ2 +zSImlAEfTpcvyc4wrHrx8VRKoPr3KONMjMnmmg6vxXHyXdQa2Cci8kDmdPcS0ZNl +FRw2GGVCtpbCh/AjoU1kmpMonYxyG44c182qfscizSof2bDaN+M6wZbyFYavGXQs +jqKudqwMbe/fDFVLRqvOqb4= +-----END PRIVATE KEY----- diff --git a/client/client.js b/frontend/server/client.js similarity index 91% rename from client/client.js rename to frontend/server/client.js index 45abe24e..fa944924 100644 --- a/client/client.js +++ b/frontend/server/client.js @@ -8,10 +8,10 @@ yargs.alias('c', 'config').describe('c', 'olympus.json config location').string( args = yargs.argv; console.log(`Config location: ${args["config"]}`) -var clientPort = 3000; +var frontendPort = 3000; if (fs.existsSync(args["config"])) { var json = JSON.parse(fs.readFileSync(args["config"], 'utf-8')); - clientPort = json["client"]["port"]; + frontendPort = json["frontend"]["port"]; } else { console.log("Failed to read config, trying default port"); } @@ -21,7 +21,7 @@ function createWindow() { icon: "./../img/olympus.ico" }) - win.loadURL(`http://localhost:${clientPort}`); + win.loadURL(`http://localhost:${frontendPort}`); win.setMenuBarVisibility(false); win.maximize(); } diff --git a/client/client.vbs b/frontend/server/client.vbs similarity index 100% rename from client/client.vbs rename to frontend/server/client.vbs diff --git a/frontend/server/demo.js b/frontend/server/demo.js new file mode 100644 index 00000000..486eb484 --- /dev/null +++ b/frontend/server/demo.js @@ -0,0 +1,528 @@ +module.exports = function (configLocation) { + var basicAuth = require('express-basic-auth') + var logger = require('morgan'); + var enc = new TextEncoder(); + const path = require('path'); + + var express = require('express'); + var fs = require('fs'); + + let rawdata = fs.readFileSync(configLocation); + let config = JSON.parse(rawdata); + + var app = express(); + + app.use(logger('dev')); + + const aircraftDatabase = require(path.join(path.dirname(configLocation), '../Mods/Services/Olympus/databases/units/aircraftdatabase.json')); + const helicopterDatabase = require(path.join(path.dirname(configLocation),'../Mods/Services/Olympus/databases/units/helicopterdatabase.json')); + const groundUnitDatabase = require(path.join(path.dirname(configLocation),'../Mods/Services/Olympus/databases/units/groundunitdatabase.json')); + const navyUnitDatabase = require(path.join(path.dirname(configLocation),'../Mods/Services/Olympus/databases/units/navyunitdatabase.json')); + + const DEMO_UNIT_DATA = {} + + const DEMO_WEAPONS_DATA = { + /*["1001"]:{ category: "Missile", alive: true, coalition: 2, name: "", position: { lat: 37.1, lng: -116, alt: 1000 }, speed: 200, heading: 45 * Math.PI / 180 }, */ + } + + class DemoDataGenerator { + constructor(app, config) + { + app.get('/olympus/units', (req, res) => this.units(req, res)); + app.get('/olympus/weapons', (req, res) => this.weapons(req, res)); + app.get('/olympus/logs', (req, res) => this.logs(req, res)); + app.get('/olympus/bullseyes', (req, res) => this.bullseyes(req, res)); + app.get('/olympus/airbases', (req, res) => this.airbases(req, res)); + app.get('/olympus/mission', (req, res) => this.mission(req, res)); + app.get('/olympus/commands', (req, res) => this.command(req, res)); + app.put('/olympus', (req, res) => this.put(req, res)); + + app.use('/olympus', basicAuth({ + users: { + 'admin': config["authentication"]["gameMasterPassword"], + 'blue': config["authentication"]["blueCommanderPassword"], + 'red': config["authentication"]["redCommanderPassword"] + }, + })) + + + let baseData = { alive: true, human: false, controlled: true, coalition: 2, country: 0, unitName: "Cool guy", groupName: "Cool group 1", state: 13, task: "Being cool!", + hasTask: true, position: { lat: 37, lng: -116, alt: 1000 }, speed: 200, horizontalVelocity: 200, verticalVelicity: 0, heading: 45, track: 45, isActiveTanker: false, isActiveAWACS: false, onOff: true, followRoads: false, fuel: 50, + desiredSpeed: 300, desiredSpeedType: 1, desiredAltitude: 1000, desiredAltitudeType: 1, leaderID: 0, + formationOffset: { x: 0, y: 0, z: 0 }, + targetID: 0, + targetPosition: { lat: 0, lng: 0, alt: 0 }, + ROE: 1, + reactionToThreat: 1, + emissionsCountermeasures: 1, + TACAN: { isOn: false, XY: 'Y', callsign: 'TKR', channel: 40 }, + radio: { frequency: 124000000, callsign: 1, callsignNumber: 1 }, + generalSettings: { prohibitAA: false, prohibitAfterburner: false, prohibitAG: false, prohibitAirWpn: false, prohibitJettison: false }, + ammo: [], + contacts: [], + activePath: [], + isLeader: true + } + + + + // UNCOMMENT TO TEST ALL UNITS **************** + /* + var databases = Object.assign({}, aircraftDatabase, helicopterDatabase, groundUnitDatabase, navyUnitDatabase); + var t = Object.keys(databases).length; + var l = Math.floor(Math.sqrt(t)); + let latIdx = 0; + let lngIdx = 0; + let idx = 1; + console.log(l) + for (let name in databases) { + if (databases[name].enabled) { + DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); + DEMO_UNIT_DATA[idx].name = name; + DEMO_UNIT_DATA[idx].groupName = `Group-${idx}`; + DEMO_UNIT_DATA[idx].position.lat += latIdx / 5; + DEMO_UNIT_DATA[idx].position.lng += lngIdx / 5; + DEMO_UNIT_DATA[idx].coalition = Math.floor(Math.random() * 3) + + latIdx += 1; + if (latIdx === l) { + latIdx = 0; + lngIdx += 1; + } + + if (name in aircraftDatabase) + DEMO_UNIT_DATA[idx].category = "Aircraft"; + else if (name in helicopterDatabase) + DEMO_UNIT_DATA[idx].category = "Helicopter"; + else if (name in groundUnitDatabase) + DEMO_UNIT_DATA[idx].category = "GroundUnit"; + else if (name in navyUnitDatabase) + DEMO_UNIT_DATA[idx].category = "NavyUnit"; + + idx += 1; + } + } + + + */ + let idx = 1; + DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); + DEMO_UNIT_DATA[idx].name = "S_75M_Volhov"; + DEMO_UNIT_DATA[idx].groupName = `Group`; + DEMO_UNIT_DATA[idx].position.lat += idx / 100; + DEMO_UNIT_DATA[idx].category = "GroundUnit"; + DEMO_UNIT_DATA[idx].isLeader = true; + + idx += 1; + DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); + DEMO_UNIT_DATA[idx].name = "SNR_75V"; + DEMO_UNIT_DATA[idx].groupName = `Group`; + DEMO_UNIT_DATA[idx].position.lat += idx / 100; + DEMO_UNIT_DATA[idx].category = "GroundUnit"; + DEMO_UNIT_DATA[idx].isLeader = false; + + idx += 1; + DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); + DEMO_UNIT_DATA[idx].name = "Ural-4320 APA-5D"; + DEMO_UNIT_DATA[idx].groupName = `Group`; + DEMO_UNIT_DATA[idx].position.lat += idx / 100; + DEMO_UNIT_DATA[idx].category = "GroundUnit"; + DEMO_UNIT_DATA[idx].isLeader = false; + + + idx += 1; + DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); + DEMO_UNIT_DATA[idx].name = "F-14B"; + DEMO_UNIT_DATA[idx].groupName = `Group-1`; + DEMO_UNIT_DATA[idx].position.lat += idx / 100; + DEMO_UNIT_DATA[idx].category = "Aircraft"; + DEMO_UNIT_DATA[idx].isLeader = false; + + idx += 1; + DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); + DEMO_UNIT_DATA[idx].name = "Infantry AK"; + DEMO_UNIT_DATA[idx].groupName = `Group-2`; + DEMO_UNIT_DATA[idx].position.lat += idx / 100; + DEMO_UNIT_DATA[idx].category = "GroundUnit"; + DEMO_UNIT_DATA[idx].isLeader = true; + DEMO_UNIT_DATA[idx].coalition = 0; + DEMO_UNIT_DATA[idx].operateAs = 2; + + idx += 1; + DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); + DEMO_UNIT_DATA[idx].name = "Infantry AK"; + DEMO_UNIT_DATA[idx].groupName = `Group-3`; + DEMO_UNIT_DATA[idx].position.lat += idx / 100; + DEMO_UNIT_DATA[idx].category = "GroundUnit"; + DEMO_UNIT_DATA[idx].isLeader = true; + DEMO_UNIT_DATA[idx].coalition = 0; + DEMO_UNIT_DATA[idx].operateAs = 1; + + idx += 1; + DEMO_UNIT_DATA[idx] = JSON.parse(JSON.stringify(baseData)); + DEMO_UNIT_DATA[idx].name = "KC-135"; + DEMO_UNIT_DATA[idx].groupName = `Group-4`; + DEMO_UNIT_DATA[idx].position.lat += idx / 100; + DEMO_UNIT_DATA[idx].category = "Aircraft"; + DEMO_UNIT_DATA[idx].isLeader = true; + + + this.startTime = Date.now(); + } + + units(req, res){ + var array = new Uint8Array(); + var time = Date.now(); + array = this.concat(array, this.uint64ToByteArray(BigInt(time))); + if (req.query["time"] == 0){ + for (let idx in DEMO_UNIT_DATA) { + const unit = DEMO_UNIT_DATA[idx]; + var dataIndex = 1; + array = this.concat(array, this.uint32ToByteArray(idx)); + array = this.appendString(array, unit.category, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.alive, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.human, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.controlled, dataIndex); dataIndex++; + array = this.appendUint16(array, unit.coalition, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.country, dataIndex); dataIndex++; + array = this.appendString(array, unit.name, dataIndex); dataIndex++; + array = this.appendString(array, unit.unitName, dataIndex); dataIndex++; + array = this.appendString(array, unit.groupName, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.state, dataIndex); dataIndex++; + array = this.appendString(array, unit.task, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.hasTask, dataIndex); dataIndex++; + array = this.appendCoordinates(array, unit.position, dataIndex); dataIndex++; + array = this.appendDouble(array, unit.speed, dataIndex); dataIndex++; + array = this.appendDouble(array, unit.horizontalVelocity, dataIndex); dataIndex++; + array = this.appendDouble(array, unit.verticalVelicity, dataIndex); dataIndex++; + array = this.appendDouble(array, unit.heading, dataIndex); dataIndex++; + array = this.appendDouble(array, unit.track, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.isActiveTanker, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.isActiveAWACS, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.onOff, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.followRoads, dataIndex); dataIndex++; + array = this.appendUint16(array, unit.fuel, dataIndex); dataIndex++; + array = this.appendDouble(array, unit.desiredSpeed, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.desiredSpeedType, dataIndex); dataIndex++; + array = this.appendDouble(array, unit.desiredAltitude, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.desiredAltitudeType, dataIndex); dataIndex++; + array = this.appendUint32(array, unit.leaderID, dataIndex); dataIndex++; + array = this.appendOffset(array, unit.formationOffset, dataIndex); dataIndex++; + array = this.appendUint32(array, unit.targetID, dataIndex); dataIndex++; + array = this.appendCoordinates(array, unit.targetPosition, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.ROE, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.reactionToThreat, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.emissionsCountermeasures, dataIndex); dataIndex++; + array = this.appendTACAN(array, unit.TACAN, dataIndex); dataIndex++; + array = this.appendRadio(array, unit.radio, dataIndex); dataIndex++; + array = this.appendRadio(array, unit.generalSettings, dataIndex); dataIndex++; + array = this.appendAmmo(array, unit.ammo, dataIndex); dataIndex++; + array = this.appendContacts(array, unit.contacts, dataIndex); dataIndex++; + array = this.appendActivePath(array, unit.activePath, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.isLeader, dataIndex); dataIndex++; + array = this.appendUint8(array, unit.operateAs, dataIndex); dataIndex++; + array = this.concat(array, this.uint8ToByteArray(255)); + } + } + res.end(Buffer.from(array, 'binary')); + }; + + weapons(req, res){ + var array = new Uint8Array(); + var time = Date.now(); + array = this.concat(array, this.uint64ToByteArray(BigInt(time))); + for (let idx in DEMO_WEAPONS_DATA) { + const weapon = DEMO_WEAPONS_DATA[idx]; + array = this.concat(array, this.uint32ToByteArray(idx)); + array = this.appendString(array, weapon.category, 1); + array = this.appendUint8(array, weapon.alive, 2); + array = this.appendUint16(array, weapon.coalition, 5); + array = this.appendString(array, weapon.name, 7); + array = this.appendCoordinates(array, weapon.position, 13); + array = this.appendDouble(array, weapon.speed, 14); + array = this.appendDouble(array, weapon.heading, 15); + array = this.concat(array, this.uint8ToByteArray(255)); + } + res.end(Buffer.from(array, 'binary')); + }; + + concat(array1, array2) { + var mergedArray = new Uint8Array(array1.length + array2.length); + mergedArray.set(array1); + mergedArray.set(array2, array1.length); + return mergedArray; + } + + uint8ToByteArray(number) { + var buffer = new ArrayBuffer(1); + var longNum = new Uint8Array(buffer); + longNum[0] = number; + return Array.from(new Uint8Array(buffer)); + } + + uint16ToByteArray(number) { + var buffer = new ArrayBuffer(2); + var longNum = new Uint16Array(buffer); + longNum[0] = number; + return Array.from(new Uint8Array(buffer)); + } + + uint32ToByteArray(number) { + var buffer = new ArrayBuffer(4); + var longNum = new Uint32Array(buffer); + longNum[0] = number; + return Array.from(new Uint8Array(buffer)); + } + + uint64ToByteArray(number) { + var buffer = new ArrayBuffer(8); + var longNum = new BigUint64Array(buffer); + longNum[0] = number; + return Array.from(new Uint8Array(buffer)); + } + + doubleToByteArray(number) { + var buffer = new ArrayBuffer(8); + var longNum = new Float64Array(buffer); + longNum[0] = number; + return Array.from(new Uint8Array(buffer)); + } + + appendUint8(array, number, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint8ToByteArray(number)); + return array; + } + + appendUint16(array, number, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint16ToByteArray(number)); + return array; + } + + appendUint32(array, number, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint32ToByteArray(number)); + return array; + } + + appendDouble(array, number, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.doubleToByteArray(number)); + return array; + } + + appendCoordinates(array, coordinates, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.doubleToByteArray(coordinates.lat)); + array = this.concat(array, this.doubleToByteArray(coordinates.lng)); + array = this.concat(array, this.doubleToByteArray(coordinates.alt)); + return array; + } + + appendOffset(array, offset, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.doubleToByteArray(offset.x)); + array = this.concat(array, this.doubleToByteArray(offset.y)); + array = this.concat(array, this.doubleToByteArray(offset.z)); + return array; + } + + appendString(array, string, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint16ToByteArray(string.length)); + array = this.concat(array, enc.encode(string)); + return array; + } + + padString(string, length) { + while (string.length < length) + string += " "; + return string.substring(0, length); + } + + appendTACAN(array, TACAN, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint8ToByteArray(TACAN.isOn)); + array = this.concat(array, this.uint8ToByteArray(TACAN.channel)); + array = this.concat(array, enc.encode(TACAN.XY)); + array = this.concat(array, enc.encode(this.padString(TACAN.callsign, 4))); + return array; + } + + appendRadio(array, radio, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint32ToByteArray(radio.frequency)); + array = this.concat(array, this.uint8ToByteArray(radio.callsign)); + array = this.concat(array, this.uint8ToByteArray(radio.callsignNumber)); + return array; + } + + appendGeneralSettings(array, generalSettings, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitAA)); + array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitAfterburner)); + array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitAG)); + array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitAirWpn)); + array = this.concat(array, this.uint8ToByteArray(generalSettings.prohibitJettison)); + return array; + } + + appendAmmo(array, ammo, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint16ToByteArray(ammo.length)); + ammo.forEach((element) => { + array = this.concat(array, this.uint16ToByteArray(element.quantity)); + array = this.concat(array, enc.encode(this.padString(element.name, 33))); + array = this.concat(array, this.uint8ToByteArray(element.guidance)); + array = this.concat(array, this.uint8ToByteArray(element.category)); + array = this.concat(array, this.uint8ToByteArray(element.missileCategory)); + }) + return array; + } + + appendContacts(array, contacts, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint16ToByteArray(contacts.length)); + contacts.forEach((element) => { + array = this.concat(array, this.uint32ToByteArray(element.ID)); + array = this.concat(array, this.uint8ToByteArray(element.detectionMethod)); + }) + return array; + } + + appendActivePath(array, activePath, datumIndex) { + array = this.concat(array, this.uint8ToByteArray(datumIndex)); + array = this.concat(array, this.uint16ToByteArray(activePath.length)); + activePath.forEach((element) => { + array = this.concat(array, this.doubleToByteArray(element.lat)); + array = this.concat(array, this.doubleToByteArray(element.lng)); + array = this.concat(array, this.doubleToByteArray(element.alt)); + }) + return array; + } + + logs(req, res){ + var ret = {logs: {"1": "I'm a log!", "2": "I'm a different log!"}}; + ret.time = Date.now(); + ret.frameRate = 60; + ret.load = 0; + res.send(JSON.stringify(ret)); + }; + + airbases(req, res){ + var ret = {airbases: { + ["0"]: { + callsign: "Nellis", + latitude: 37.3, + longitude: -115.8, + coalition: "neutral" + }, + ["1"]: { + callsign: "Red", + latitude: 37.3, + longitude: -115.75, + coalition: "red" + }, + ["2"]: { + callsign: "Blue", + latitude: 37.3, + longitude: -115.7, + coalition: "blue" + } + }}; + ret.time = Date.now(); + res.send(JSON.stringify(ret)); + }; + + bullseyes(req, res){ + var ret = {bullseyes: { + "0": { + latitude: 37.25, + longitude: -115.8, + coalition: "neutral" + }, + "1": { + latitude: 37.25, + longitude: -115.75, + coalition: "red" + }, + "2": { + latitude: 37.25, + longitude: -115.7, + coalition: "blue" + } + }}; + ret.time = Date.now(); + res.send(JSON.stringify(ret)); + }; + + mission(req, res){ + var ret = {mission: {theatre: "Nevada"}}; + ret.time = Date.now(); + + ret.mission.dateAndTime = { + time: { h: 10, m: 15, s: 34 }, + date: "", + elapsedTime: (Date.now() - this.startTime) / 1000, + startTime: 0 + } + + ret.mission.coalitions = { + red: [ + 'RUSSIA', + 'CHINA' + ], + blue: [ + 'UK', + 'USA' + ], + neutral: [ + 'ITALY' + ] + } + + ret.mission.commandModeOptions = { + restrictSpawns: true, + restrictToCoalition: true, + setupTime: 0, + spawnPoints: { + red: 400, + blue: 400 + }, + eras: ["WW2", "Early Cold War", "Late Cold War", "Modern"] + } + + var auth = req.get("Authorization"); + if (auth) { + var username = Buffer.from(auth.replace("Basic ", ""), 'base64').toString('binary').split(":")[0]; + switch (username) { + case "admin": + ret.mission.commandModeOptions.commandMode = "Game master"; + break + case "blue": + ret.mission.commandModeOptions.commandMode = "Blue commander"; + break; + case "red": + ret.mission.commandModeOptions.commandMode = "Red commander"; + break; + } + } + res.send(JSON.stringify(ret)); + } + + command(req, res) { + var ret = {commandExecuted: Math.random() > 0.5}; + res.send(JSON.stringify(ret)); + } + + put(req, res) { + var ret = {commandHash: Math.random().toString(36).slice(2, 19)} + res.send(JSON.stringify(ret)); + } + } + + var demoDataGenerator = new DemoDataGenerator(app, config); + + return app; +} diff --git a/frontend/server/package.json b/frontend/server/package.json new file mode 100644 index 00000000..7acdf8e1 --- /dev/null +++ b/frontend/server/package.json @@ -0,0 +1,31 @@ +{ + "name": "DCSOlympus Server", + "main": "client.js", + "version": "{{OLYMPUS_VERSION_NUMBER}}", + "scripts": { + "build-release": "call ./scripts/build-release.bat", + "server": "node ./bin/www", + "client": "electron ." + }, + "private": true, + "dependencies": { + "appjs": "^0.0.20", + "appjs-win32": "^0.0.19", + "body-parser": "^1.20.2", + "debug": "~2.6.9", + "ejs": "^3.1.8", + "electron": "^28.0.0", + "express": "^4.18.2", + "express-basic-auth": "^1.2.1", + "http-proxy-middleware": "^2.0.6", + "morgan": "~1.9.1", + "open": "^10.0.0", + "regedit": "^5.1.2", + "save": "^2.9.0", + "sha256": "^0.2.0", + "srtm-elevation": "^2.1.2", + "tcp-ping-port": "^1.0.1", + "uuid": "^9.0.1", + "yargs": "^17.7.2" + } +} diff --git a/client/public/databases/airbases/caucasus.json b/frontend/server/public/databases/airbases/caucasus.json similarity index 100% rename from client/public/databases/airbases/caucasus.json rename to frontend/server/public/databases/airbases/caucasus.json diff --git a/client/public/databases/airbases/falklands.json b/frontend/server/public/databases/airbases/falklands.json similarity index 100% rename from client/public/databases/airbases/falklands.json rename to frontend/server/public/databases/airbases/falklands.json diff --git a/frontend/server/public/databases/airbases/kola.json b/frontend/server/public/databases/airbases/kola.json new file mode 100644 index 00000000..a0a93a9b --- /dev/null +++ b/frontend/server/public/databases/airbases/kola.json @@ -0,0 +1,399 @@ +{ + "airfields": { + "Severomorsk-1": { + "runways": [ + { + "headings": [ + { + "14": { + "magHeading": "118", + "Heading": "135", + "ILS": "" + } + }, + { + "32": { + "magHeading": "299", + "Heading": "315", + "ILS": "" + } + } + ], + "length": "9084" + } + ], + "TACAN": "", + "ICAO": "ULAK", + "elevation": "261" + }, + "Banak": { + "runways": [ + { + "headings": [ + { + "34": { + "magHeading": "339", + "Heading": "352", + "ILS": "108.30" + } + }, + { + "16": { + "magHeading": "159", + "Heading": "172", + "ILS": "" + } + } + ], + "length": "8104" + } + ], + "TACAN": "47X", + "ICAO": "ENNA", + "elevation": "17" + }, + "Severomorsk-3": { + "runways": [ + { + "headings": [ + { + "35": { + "magHeading": "334", + "Heading": "351", + "ILS": "" + } + }, + { + "17": { + "magHeading": "154", + "Heading": "171", + "ILS": "" + } + } + ], + "length": "7497" + } + ], + "TACAN": "", + "ICAO": "XLMV", + "elevation": "567" + }, + "Kemi Tornio": { + "runways": [ + { + "headings": [ + { + "18": { + "magHeading": "173", + "Heading": "184", + "ILS": "" + } + }, + { + "36": { + "magHeading": "355", + "Heading": "4", + "ILS": "110.90" + } + } + ], + "length": "7862" + } + ], + "TACAN": "", + "ICAO": "EFKE", + "elevation": "46" + }, + "Murmansk International": { + "runways": [ + { + "headings": [ + { + "13": { + "magHeading": "119", + "Heading": "135", + "ILS": "110.30" + } + }, + { + "31": { + "magHeading": "299", + "Heading": "315", + "ILS": "108.50" + } + } + ], + "length": "7926" + } + ], + "TACAN": "", + "ICAO": "ULMM", + "elevation": "249" + }, + "Bodo": { + "runways": [ + { + "headings": [ + { + "07": { + "magHeading": "78", + "Heading": "84", + "ILS": "110.30" + } + }, + { + "25": { + "magHeading": "257", + "Heading": "264", + "ILS": "108.70" + } + } + ], + "length": "8618" + } + ], + "TACAN": "45X", + "ICAO": "ENBO", + "elevation": "25" + }, + "Rovaniemi": { + "runways": [ + { + "headings": [ + { + "21": { + "magHeading": "201", + "Heading": "213", + "ILS": "117.70" + } + }, + { + "03": { + "magHeading": "21", + "Heading": "33", + "ILS": "" + } + } + ], + "length": "9096" + } + ], + "TACAN": "", + "ICAO": "EFRO", + "elevation": "612" + }, + "Kalixfors": { + "runways": [ + { + "headings": [ + { + "17": { + "magHeading": "162", + "Heading": "171", + "ILS": "" + } + }, + { + "35": { + "magHeading": "342", + "Heading": "351", + "ILS": "" + } + } + ], + "length": "3597" + } + ], + "TACAN": "", + "ICAO": "ESUK", + "elevation": "1552" + }, + "Jokkmokk": { + "runways": [ + { + "headings": [ + { + "14": { + "magHeading": "136", + "Heading": "145", + "ILS": "" + } + }, + { + "32": { + "magHeading": "316", + "Heading": "325", + "ILS": "" + } + } + ], + "length": "6306" + }, + { + "headings": [ + { + "32": { + "magHeading": "323", + "Heading": "332", + "ILS": "" + } + }, + { + "14": { + "magHeading": "143", + "Heading": "152", + "ILS": "" + } + } + ], + "length": "6306" + }, + { + "headings": [ + { + "15": { + "magHeading": "124", + "Heading": "133", + "ILS": "" + } + }, + { + "33": { + "magHeading": "302", + "Heading": "313", + "ILS": "" + } + } + ], + "length": "3828" + }, + { + "headings": [ + { + "36": { + "magHeading": "354", + "Heading": "3", + "ILS": "" + } + }, + { + "18": { + "magHeading": "174", + "Heading": "183", + "ILS": "" + } + } + ], + "length": "3828" + } + ], + "TACAN": "", + "ICAO": "ESNJ", + "elevation": "891" + }, + "Monchegorsk": { + "runways": [ + { + "headings": [ + { + "01": { + "magHeading": "001", + "Heading": "16", + "ILS": "" + } + }, + { + "19": { + "magHeading": "180", + "Heading": "196", + "ILS": "" + } + } + ], + "length": "7509" + } + ], + "TACAN": "", + "ICAO": "UMOE", + "elevation": "547" + }, + "Olenya": { + "runways": [ + { + "headings": [ + { + "19": { + "magHeading": "171", + "Heading": "188", + "ILS": "" + } + }, + { + "01": { + "magHeading": "352", + "Heading": "8", + "ILS": "" + } + } + ], + "length": "10863" + } + ], + "TACAN": "", + "ICAO": "UOLE", + "elevation": "721" + }, + "Bas 100": { + "runways": [ + { + "headings": [ + { + "22": { + "magHeading": "210", + "Heading": "223", + "ILS": "" + } + }, + { + "04": { + "magHeading": "31", + "Heading": "43", + "ILS": "" + } + } + ], + "length": "7719" + } + ], + "TACAN": "", + "ICAO": "", + "elevation": "735" + }, + "Kiruna": { + "runways": [ + { + "headings": [ + { + "21": { + "magHeading": "204", + "Heading": "214", + "ILS": "110.30" + } + }, + { + "03": { + "magHeading": "25", + "Heading": "34", + "ILS": "" + } + } + ], + "length": "7432" + } + ], + "TACAN": "", + "ICAO": "ESNQ", + "elevation": "1434" + } + } +} \ No newline at end of file diff --git a/client/public/databases/airbases/marianas.json b/frontend/server/public/databases/airbases/marianas.json similarity index 100% rename from client/public/databases/airbases/marianas.json rename to frontend/server/public/databases/airbases/marianas.json diff --git a/client/public/databases/airbases/nevada.json b/frontend/server/public/databases/airbases/nevada.json similarity index 100% rename from client/public/databases/airbases/nevada.json rename to frontend/server/public/databases/airbases/nevada.json diff --git a/client/public/databases/airbases/normandy.json b/frontend/server/public/databases/airbases/normandy.json similarity index 100% rename from client/public/databases/airbases/normandy.json rename to frontend/server/public/databases/airbases/normandy.json diff --git a/client/public/databases/airbases/persiangulf.json b/frontend/server/public/databases/airbases/persiangulf.json similarity index 100% rename from client/public/databases/airbases/persiangulf.json rename to frontend/server/public/databases/airbases/persiangulf.json diff --git a/client/public/databases/airbases/sinaimap.json b/frontend/server/public/databases/airbases/sinaimap.json similarity index 99% rename from client/public/databases/airbases/sinaimap.json rename to frontend/server/public/databases/airbases/sinaimap.json index 87f5bae6..c1f87765 100644 --- a/client/public/databases/airbases/sinaimap.json +++ b/frontend/server/public/databases/airbases/sinaimap.json @@ -1037,7 +1037,7 @@ "01R": { "magHeading": "11", "Heading": "16", - "ILS": "109.7" + "ILS": "109.70" } }, { diff --git a/client/public/databases/airbases/syria.json b/frontend/server/public/databases/airbases/syria.json similarity index 100% rename from client/public/databases/airbases/syria.json rename to frontend/server/public/databases/airbases/syria.json diff --git a/client/public/databases/airbases/thechannel.json b/frontend/server/public/databases/airbases/thechannel.json similarity index 100% rename from client/public/databases/airbases/thechannel.json rename to frontend/server/public/databases/airbases/thechannel.json diff --git a/client/public/images/countries/ac.svg b/frontend/server/public/images/countries/ac.svg similarity index 100% rename from client/public/images/countries/ac.svg rename to frontend/server/public/images/countries/ac.svg diff --git a/client/public/images/countries/ad.svg b/frontend/server/public/images/countries/ad.svg similarity index 100% rename from client/public/images/countries/ad.svg rename to frontend/server/public/images/countries/ad.svg diff --git a/client/public/images/countries/ae.svg b/frontend/server/public/images/countries/ae.svg similarity index 100% rename from client/public/images/countries/ae.svg rename to frontend/server/public/images/countries/ae.svg diff --git a/client/public/images/countries/af.svg b/frontend/server/public/images/countries/af.svg similarity index 100% rename from client/public/images/countries/af.svg rename to frontend/server/public/images/countries/af.svg diff --git a/client/public/images/countries/ag.svg b/frontend/server/public/images/countries/ag.svg similarity index 100% rename from client/public/images/countries/ag.svg rename to frontend/server/public/images/countries/ag.svg diff --git a/client/public/images/countries/ai.svg b/frontend/server/public/images/countries/ai.svg similarity index 100% rename from client/public/images/countries/ai.svg rename to frontend/server/public/images/countries/ai.svg diff --git a/client/public/images/countries/al.svg b/frontend/server/public/images/countries/al.svg similarity index 100% rename from client/public/images/countries/al.svg rename to frontend/server/public/images/countries/al.svg diff --git a/client/public/images/countries/am.svg b/frontend/server/public/images/countries/am.svg similarity index 100% rename from client/public/images/countries/am.svg rename to frontend/server/public/images/countries/am.svg diff --git a/client/public/images/countries/ao.svg b/frontend/server/public/images/countries/ao.svg similarity index 100% rename from client/public/images/countries/ao.svg rename to frontend/server/public/images/countries/ao.svg diff --git a/client/public/images/countries/aq.svg b/frontend/server/public/images/countries/aq.svg similarity index 100% rename from client/public/images/countries/aq.svg rename to frontend/server/public/images/countries/aq.svg diff --git a/client/public/images/countries/ar.svg b/frontend/server/public/images/countries/ar.svg similarity index 100% rename from client/public/images/countries/ar.svg rename to frontend/server/public/images/countries/ar.svg diff --git a/client/public/images/countries/arab.svg b/frontend/server/public/images/countries/arab.svg similarity index 100% rename from client/public/images/countries/arab.svg rename to frontend/server/public/images/countries/arab.svg diff --git a/client/public/images/countries/as.svg b/frontend/server/public/images/countries/as.svg similarity index 100% rename from client/public/images/countries/as.svg rename to frontend/server/public/images/countries/as.svg diff --git a/client/public/images/countries/at.svg b/frontend/server/public/images/countries/at.svg similarity index 100% rename from client/public/images/countries/at.svg rename to frontend/server/public/images/countries/at.svg diff --git a/client/public/images/countries/au.svg b/frontend/server/public/images/countries/au.svg similarity index 100% rename from client/public/images/countries/au.svg rename to frontend/server/public/images/countries/au.svg diff --git a/client/public/images/countries/aw.svg b/frontend/server/public/images/countries/aw.svg similarity index 100% rename from client/public/images/countries/aw.svg rename to frontend/server/public/images/countries/aw.svg diff --git a/client/public/images/countries/ax.svg b/frontend/server/public/images/countries/ax.svg similarity index 100% rename from client/public/images/countries/ax.svg rename to frontend/server/public/images/countries/ax.svg diff --git a/client/public/images/countries/az.svg b/frontend/server/public/images/countries/az.svg similarity index 100% rename from client/public/images/countries/az.svg rename to frontend/server/public/images/countries/az.svg diff --git a/client/public/images/countries/ba.svg b/frontend/server/public/images/countries/ba.svg similarity index 100% rename from client/public/images/countries/ba.svg rename to frontend/server/public/images/countries/ba.svg diff --git a/client/public/images/countries/bb.svg b/frontend/server/public/images/countries/bb.svg similarity index 100% rename from client/public/images/countries/bb.svg rename to frontend/server/public/images/countries/bb.svg diff --git a/client/public/images/countries/bd.svg b/frontend/server/public/images/countries/bd.svg similarity index 100% rename from client/public/images/countries/bd.svg rename to frontend/server/public/images/countries/bd.svg diff --git a/client/public/images/countries/be.svg b/frontend/server/public/images/countries/be.svg similarity index 100% rename from client/public/images/countries/be.svg rename to frontend/server/public/images/countries/be.svg diff --git a/client/public/images/countries/bf.svg b/frontend/server/public/images/countries/bf.svg similarity index 100% rename from client/public/images/countries/bf.svg rename to frontend/server/public/images/countries/bf.svg diff --git a/client/public/images/countries/bg.svg b/frontend/server/public/images/countries/bg.svg similarity index 100% rename from client/public/images/countries/bg.svg rename to frontend/server/public/images/countries/bg.svg diff --git a/client/public/images/countries/bh.svg b/frontend/server/public/images/countries/bh.svg similarity index 100% rename from client/public/images/countries/bh.svg rename to frontend/server/public/images/countries/bh.svg diff --git a/client/public/images/countries/bi.svg b/frontend/server/public/images/countries/bi.svg similarity index 100% rename from client/public/images/countries/bi.svg rename to frontend/server/public/images/countries/bi.svg diff --git a/client/public/images/countries/bj.svg b/frontend/server/public/images/countries/bj.svg similarity index 100% rename from client/public/images/countries/bj.svg rename to frontend/server/public/images/countries/bj.svg diff --git a/client/public/images/countries/bl.svg b/frontend/server/public/images/countries/bl.svg similarity index 100% rename from client/public/images/countries/bl.svg rename to frontend/server/public/images/countries/bl.svg diff --git a/client/public/images/countries/blue.svg b/frontend/server/public/images/countries/blue.svg similarity index 100% rename from client/public/images/countries/blue.svg rename to frontend/server/public/images/countries/blue.svg diff --git a/client/public/images/countries/bm.svg b/frontend/server/public/images/countries/bm.svg similarity index 100% rename from client/public/images/countries/bm.svg rename to frontend/server/public/images/countries/bm.svg diff --git a/client/public/images/countries/bn.svg b/frontend/server/public/images/countries/bn.svg similarity index 100% rename from client/public/images/countries/bn.svg rename to frontend/server/public/images/countries/bn.svg diff --git a/client/public/images/countries/bo.svg b/frontend/server/public/images/countries/bo.svg similarity index 100% rename from client/public/images/countries/bo.svg rename to frontend/server/public/images/countries/bo.svg diff --git a/client/public/images/countries/bq.svg b/frontend/server/public/images/countries/bq.svg similarity index 100% rename from client/public/images/countries/bq.svg rename to frontend/server/public/images/countries/bq.svg diff --git a/client/public/images/countries/br.svg b/frontend/server/public/images/countries/br.svg similarity index 100% rename from client/public/images/countries/br.svg rename to frontend/server/public/images/countries/br.svg diff --git a/client/public/images/countries/bs.svg b/frontend/server/public/images/countries/bs.svg similarity index 100% rename from client/public/images/countries/bs.svg rename to frontend/server/public/images/countries/bs.svg diff --git a/client/public/images/countries/bt.svg b/frontend/server/public/images/countries/bt.svg similarity index 100% rename from client/public/images/countries/bt.svg rename to frontend/server/public/images/countries/bt.svg diff --git a/client/public/images/countries/bv.svg b/frontend/server/public/images/countries/bv.svg similarity index 100% rename from client/public/images/countries/bv.svg rename to frontend/server/public/images/countries/bv.svg diff --git a/client/public/images/countries/bw.svg b/frontend/server/public/images/countries/bw.svg similarity index 100% rename from client/public/images/countries/bw.svg rename to frontend/server/public/images/countries/bw.svg diff --git a/client/public/images/countries/by.svg b/frontend/server/public/images/countries/by.svg similarity index 100% rename from client/public/images/countries/by.svg rename to frontend/server/public/images/countries/by.svg diff --git a/client/public/images/countries/bz.svg b/frontend/server/public/images/countries/bz.svg similarity index 100% rename from client/public/images/countries/bz.svg rename to frontend/server/public/images/countries/bz.svg diff --git a/client/public/images/countries/ca.svg b/frontend/server/public/images/countries/ca.svg similarity index 100% rename from client/public/images/countries/ca.svg rename to frontend/server/public/images/countries/ca.svg diff --git a/client/public/images/countries/cc.svg b/frontend/server/public/images/countries/cc.svg similarity index 100% rename from client/public/images/countries/cc.svg rename to frontend/server/public/images/countries/cc.svg diff --git a/client/public/images/countries/cd.svg b/frontend/server/public/images/countries/cd.svg similarity index 100% rename from client/public/images/countries/cd.svg rename to frontend/server/public/images/countries/cd.svg diff --git a/client/public/images/countries/cefta.svg b/frontend/server/public/images/countries/cefta.svg similarity index 100% rename from client/public/images/countries/cefta.svg rename to frontend/server/public/images/countries/cefta.svg diff --git a/client/public/images/countries/cf.svg b/frontend/server/public/images/countries/cf.svg similarity index 100% rename from client/public/images/countries/cf.svg rename to frontend/server/public/images/countries/cf.svg diff --git a/client/public/images/countries/cg.svg b/frontend/server/public/images/countries/cg.svg similarity index 100% rename from client/public/images/countries/cg.svg rename to frontend/server/public/images/countries/cg.svg diff --git a/client/public/images/countries/ch.svg b/frontend/server/public/images/countries/ch.svg similarity index 100% rename from client/public/images/countries/ch.svg rename to frontend/server/public/images/countries/ch.svg diff --git a/client/public/images/countries/ci.svg b/frontend/server/public/images/countries/ci.svg similarity index 100% rename from client/public/images/countries/ci.svg rename to frontend/server/public/images/countries/ci.svg diff --git a/client/public/images/countries/ck.svg b/frontend/server/public/images/countries/ck.svg similarity index 100% rename from client/public/images/countries/ck.svg rename to frontend/server/public/images/countries/ck.svg diff --git a/client/public/images/countries/cl.svg b/frontend/server/public/images/countries/cl.svg similarity index 100% rename from client/public/images/countries/cl.svg rename to frontend/server/public/images/countries/cl.svg diff --git a/client/public/images/countries/cm.svg b/frontend/server/public/images/countries/cm.svg similarity index 100% rename from client/public/images/countries/cm.svg rename to frontend/server/public/images/countries/cm.svg diff --git a/client/public/images/countries/cn.svg b/frontend/server/public/images/countries/cn.svg similarity index 100% rename from client/public/images/countries/cn.svg rename to frontend/server/public/images/countries/cn.svg diff --git a/client/public/images/countries/co.svg b/frontend/server/public/images/countries/co.svg similarity index 100% rename from client/public/images/countries/co.svg rename to frontend/server/public/images/countries/co.svg diff --git a/client/public/images/countries/codes.json b/frontend/server/public/images/countries/codes.json similarity index 100% rename from client/public/images/countries/codes.json rename to frontend/server/public/images/countries/codes.json diff --git a/client/public/images/countries/cp.svg b/frontend/server/public/images/countries/cp.svg similarity index 100% rename from client/public/images/countries/cp.svg rename to frontend/server/public/images/countries/cp.svg diff --git a/client/public/images/countries/cr.svg b/frontend/server/public/images/countries/cr.svg similarity index 100% rename from client/public/images/countries/cr.svg rename to frontend/server/public/images/countries/cr.svg diff --git a/client/public/images/countries/cu.svg b/frontend/server/public/images/countries/cu.svg similarity index 100% rename from client/public/images/countries/cu.svg rename to frontend/server/public/images/countries/cu.svg diff --git a/client/public/images/countries/cv.svg b/frontend/server/public/images/countries/cv.svg similarity index 100% rename from client/public/images/countries/cv.svg rename to frontend/server/public/images/countries/cv.svg diff --git a/client/public/images/countries/cw.svg b/frontend/server/public/images/countries/cw.svg similarity index 100% rename from client/public/images/countries/cw.svg rename to frontend/server/public/images/countries/cw.svg diff --git a/client/public/images/countries/cx.svg b/frontend/server/public/images/countries/cx.svg similarity index 100% rename from client/public/images/countries/cx.svg rename to frontend/server/public/images/countries/cx.svg diff --git a/client/public/images/countries/cy.svg b/frontend/server/public/images/countries/cy.svg similarity index 100% rename from client/public/images/countries/cy.svg rename to frontend/server/public/images/countries/cy.svg diff --git a/client/public/images/countries/cz.svg b/frontend/server/public/images/countries/cz.svg similarity index 100% rename from client/public/images/countries/cz.svg rename to frontend/server/public/images/countries/cz.svg diff --git a/client/public/images/countries/de.svg b/frontend/server/public/images/countries/de.svg similarity index 100% rename from client/public/images/countries/de.svg rename to frontend/server/public/images/countries/de.svg diff --git a/client/public/images/countries/dg.svg b/frontend/server/public/images/countries/dg.svg similarity index 100% rename from client/public/images/countries/dg.svg rename to frontend/server/public/images/countries/dg.svg diff --git a/client/public/images/countries/dj.svg b/frontend/server/public/images/countries/dj.svg similarity index 100% rename from client/public/images/countries/dj.svg rename to frontend/server/public/images/countries/dj.svg diff --git a/client/public/images/countries/dk.svg b/frontend/server/public/images/countries/dk.svg similarity index 100% rename from client/public/images/countries/dk.svg rename to frontend/server/public/images/countries/dk.svg diff --git a/client/public/images/countries/dm.svg b/frontend/server/public/images/countries/dm.svg similarity index 100% rename from client/public/images/countries/dm.svg rename to frontend/server/public/images/countries/dm.svg diff --git a/client/public/images/countries/do.svg b/frontend/server/public/images/countries/do.svg similarity index 100% rename from client/public/images/countries/do.svg rename to frontend/server/public/images/countries/do.svg diff --git a/client/public/images/countries/dz.svg b/frontend/server/public/images/countries/dz.svg similarity index 100% rename from client/public/images/countries/dz.svg rename to frontend/server/public/images/countries/dz.svg diff --git a/client/public/images/countries/eac.svg b/frontend/server/public/images/countries/eac.svg similarity index 100% rename from client/public/images/countries/eac.svg rename to frontend/server/public/images/countries/eac.svg diff --git a/client/public/images/countries/ec.svg b/frontend/server/public/images/countries/ec.svg similarity index 100% rename from client/public/images/countries/ec.svg rename to frontend/server/public/images/countries/ec.svg diff --git a/client/public/images/countries/ee.svg b/frontend/server/public/images/countries/ee.svg similarity index 100% rename from client/public/images/countries/ee.svg rename to frontend/server/public/images/countries/ee.svg diff --git a/client/public/images/countries/eg.svg b/frontend/server/public/images/countries/eg.svg similarity index 100% rename from client/public/images/countries/eg.svg rename to frontend/server/public/images/countries/eg.svg diff --git a/client/public/images/countries/eh.svg b/frontend/server/public/images/countries/eh.svg similarity index 100% rename from client/public/images/countries/eh.svg rename to frontend/server/public/images/countries/eh.svg diff --git a/client/public/images/countries/er.svg b/frontend/server/public/images/countries/er.svg similarity index 100% rename from client/public/images/countries/er.svg rename to frontend/server/public/images/countries/er.svg diff --git a/client/public/images/countries/es-ct.svg b/frontend/server/public/images/countries/es-ct.svg similarity index 100% rename from client/public/images/countries/es-ct.svg rename to frontend/server/public/images/countries/es-ct.svg diff --git a/client/public/images/countries/es-ga.svg b/frontend/server/public/images/countries/es-ga.svg similarity index 100% rename from client/public/images/countries/es-ga.svg rename to frontend/server/public/images/countries/es-ga.svg diff --git a/client/public/images/countries/es-pv.svg b/frontend/server/public/images/countries/es-pv.svg similarity index 100% rename from client/public/images/countries/es-pv.svg rename to frontend/server/public/images/countries/es-pv.svg diff --git a/client/public/images/countries/es.svg b/frontend/server/public/images/countries/es.svg similarity index 100% rename from client/public/images/countries/es.svg rename to frontend/server/public/images/countries/es.svg diff --git a/client/public/images/countries/et.svg b/frontend/server/public/images/countries/et.svg similarity index 100% rename from client/public/images/countries/et.svg rename to frontend/server/public/images/countries/et.svg diff --git a/client/public/images/countries/eu.svg b/frontend/server/public/images/countries/eu.svg similarity index 100% rename from client/public/images/countries/eu.svg rename to frontend/server/public/images/countries/eu.svg diff --git a/client/public/images/countries/fi.svg b/frontend/server/public/images/countries/fi.svg similarity index 100% rename from client/public/images/countries/fi.svg rename to frontend/server/public/images/countries/fi.svg diff --git a/client/public/images/countries/fj.svg b/frontend/server/public/images/countries/fj.svg similarity index 100% rename from client/public/images/countries/fj.svg rename to frontend/server/public/images/countries/fj.svg diff --git a/client/public/images/countries/fk.svg b/frontend/server/public/images/countries/fk.svg similarity index 100% rename from client/public/images/countries/fk.svg rename to frontend/server/public/images/countries/fk.svg diff --git a/client/public/images/countries/fm.svg b/frontend/server/public/images/countries/fm.svg similarity index 100% rename from client/public/images/countries/fm.svg rename to frontend/server/public/images/countries/fm.svg diff --git a/client/public/images/countries/fo.svg b/frontend/server/public/images/countries/fo.svg similarity index 100% rename from client/public/images/countries/fo.svg rename to frontend/server/public/images/countries/fo.svg diff --git a/client/public/images/countries/fr.svg b/frontend/server/public/images/countries/fr.svg similarity index 100% rename from client/public/images/countries/fr.svg rename to frontend/server/public/images/countries/fr.svg diff --git a/client/public/images/countries/ga.svg b/frontend/server/public/images/countries/ga.svg similarity index 100% rename from client/public/images/countries/ga.svg rename to frontend/server/public/images/countries/ga.svg diff --git a/client/public/images/countries/gb-eng.svg b/frontend/server/public/images/countries/gb-eng.svg similarity index 100% rename from client/public/images/countries/gb-eng.svg rename to frontend/server/public/images/countries/gb-eng.svg diff --git a/client/public/images/countries/gb-nir.svg b/frontend/server/public/images/countries/gb-nir.svg similarity index 100% rename from client/public/images/countries/gb-nir.svg rename to frontend/server/public/images/countries/gb-nir.svg diff --git a/client/public/images/countries/gb-sct.svg b/frontend/server/public/images/countries/gb-sct.svg similarity index 100% rename from client/public/images/countries/gb-sct.svg rename to frontend/server/public/images/countries/gb-sct.svg diff --git a/client/public/images/countries/gb-wls.svg b/frontend/server/public/images/countries/gb-wls.svg similarity index 100% rename from client/public/images/countries/gb-wls.svg rename to frontend/server/public/images/countries/gb-wls.svg diff --git a/client/public/images/countries/gb.svg b/frontend/server/public/images/countries/gb.svg similarity index 100% rename from client/public/images/countries/gb.svg rename to frontend/server/public/images/countries/gb.svg diff --git a/client/public/images/countries/gd.svg b/frontend/server/public/images/countries/gd.svg similarity index 100% rename from client/public/images/countries/gd.svg rename to frontend/server/public/images/countries/gd.svg diff --git a/client/public/images/countries/ge.svg b/frontend/server/public/images/countries/ge.svg similarity index 100% rename from client/public/images/countries/ge.svg rename to frontend/server/public/images/countries/ge.svg diff --git a/client/public/images/countries/gf.svg b/frontend/server/public/images/countries/gf.svg similarity index 100% rename from client/public/images/countries/gf.svg rename to frontend/server/public/images/countries/gf.svg diff --git a/client/public/images/countries/gg.svg b/frontend/server/public/images/countries/gg.svg similarity index 100% rename from client/public/images/countries/gg.svg rename to frontend/server/public/images/countries/gg.svg diff --git a/client/public/images/countries/gh.svg b/frontend/server/public/images/countries/gh.svg similarity index 100% rename from client/public/images/countries/gh.svg rename to frontend/server/public/images/countries/gh.svg diff --git a/client/public/images/countries/gi.svg b/frontend/server/public/images/countries/gi.svg similarity index 100% rename from client/public/images/countries/gi.svg rename to frontend/server/public/images/countries/gi.svg diff --git a/client/public/images/countries/gl.svg b/frontend/server/public/images/countries/gl.svg similarity index 100% rename from client/public/images/countries/gl.svg rename to frontend/server/public/images/countries/gl.svg diff --git a/client/public/images/countries/gm.svg b/frontend/server/public/images/countries/gm.svg similarity index 100% rename from client/public/images/countries/gm.svg rename to frontend/server/public/images/countries/gm.svg diff --git a/client/public/images/countries/gn.svg b/frontend/server/public/images/countries/gn.svg similarity index 100% rename from client/public/images/countries/gn.svg rename to frontend/server/public/images/countries/gn.svg diff --git a/client/public/images/countries/gp.svg b/frontend/server/public/images/countries/gp.svg similarity index 100% rename from client/public/images/countries/gp.svg rename to frontend/server/public/images/countries/gp.svg diff --git a/client/public/images/countries/gq.svg b/frontend/server/public/images/countries/gq.svg similarity index 100% rename from client/public/images/countries/gq.svg rename to frontend/server/public/images/countries/gq.svg diff --git a/client/public/images/countries/gr.svg b/frontend/server/public/images/countries/gr.svg similarity index 100% rename from client/public/images/countries/gr.svg rename to frontend/server/public/images/countries/gr.svg diff --git a/client/public/images/countries/gs.svg b/frontend/server/public/images/countries/gs.svg similarity index 100% rename from client/public/images/countries/gs.svg rename to frontend/server/public/images/countries/gs.svg diff --git a/client/public/images/countries/gt.svg b/frontend/server/public/images/countries/gt.svg similarity index 100% rename from client/public/images/countries/gt.svg rename to frontend/server/public/images/countries/gt.svg diff --git a/client/public/images/countries/gu.svg b/frontend/server/public/images/countries/gu.svg similarity index 100% rename from client/public/images/countries/gu.svg rename to frontend/server/public/images/countries/gu.svg diff --git a/client/public/images/countries/gw.svg b/frontend/server/public/images/countries/gw.svg similarity index 100% rename from client/public/images/countries/gw.svg rename to frontend/server/public/images/countries/gw.svg diff --git a/client/public/images/countries/gy.svg b/frontend/server/public/images/countries/gy.svg similarity index 100% rename from client/public/images/countries/gy.svg rename to frontend/server/public/images/countries/gy.svg diff --git a/client/public/images/countries/hk.svg b/frontend/server/public/images/countries/hk.svg similarity index 100% rename from client/public/images/countries/hk.svg rename to frontend/server/public/images/countries/hk.svg diff --git a/client/public/images/countries/hm.svg b/frontend/server/public/images/countries/hm.svg similarity index 100% rename from client/public/images/countries/hm.svg rename to frontend/server/public/images/countries/hm.svg diff --git a/client/public/images/countries/hn.svg b/frontend/server/public/images/countries/hn.svg similarity index 100% rename from client/public/images/countries/hn.svg rename to frontend/server/public/images/countries/hn.svg diff --git a/client/public/images/countries/hr.svg b/frontend/server/public/images/countries/hr.svg similarity index 100% rename from client/public/images/countries/hr.svg rename to frontend/server/public/images/countries/hr.svg diff --git a/client/public/images/countries/ht.svg b/frontend/server/public/images/countries/ht.svg similarity index 100% rename from client/public/images/countries/ht.svg rename to frontend/server/public/images/countries/ht.svg diff --git a/client/public/images/countries/hu.svg b/frontend/server/public/images/countries/hu.svg similarity index 100% rename from client/public/images/countries/hu.svg rename to frontend/server/public/images/countries/hu.svg diff --git a/client/public/images/countries/ic.svg b/frontend/server/public/images/countries/ic.svg similarity index 100% rename from client/public/images/countries/ic.svg rename to frontend/server/public/images/countries/ic.svg diff --git a/client/public/images/countries/id.svg b/frontend/server/public/images/countries/id.svg similarity index 100% rename from client/public/images/countries/id.svg rename to frontend/server/public/images/countries/id.svg diff --git a/client/public/images/countries/ie.svg b/frontend/server/public/images/countries/ie.svg similarity index 100% rename from client/public/images/countries/ie.svg rename to frontend/server/public/images/countries/ie.svg diff --git a/client/public/images/countries/il.svg b/frontend/server/public/images/countries/il.svg similarity index 100% rename from client/public/images/countries/il.svg rename to frontend/server/public/images/countries/il.svg diff --git a/client/public/images/countries/im.svg b/frontend/server/public/images/countries/im.svg similarity index 100% rename from client/public/images/countries/im.svg rename to frontend/server/public/images/countries/im.svg diff --git a/client/public/images/countries/in.svg b/frontend/server/public/images/countries/in.svg similarity index 100% rename from client/public/images/countries/in.svg rename to frontend/server/public/images/countries/in.svg diff --git a/client/public/images/countries/io.svg b/frontend/server/public/images/countries/io.svg similarity index 100% rename from client/public/images/countries/io.svg rename to frontend/server/public/images/countries/io.svg diff --git a/client/public/images/countries/iq.svg b/frontend/server/public/images/countries/iq.svg similarity index 100% rename from client/public/images/countries/iq.svg rename to frontend/server/public/images/countries/iq.svg diff --git a/client/public/images/countries/ir.svg b/frontend/server/public/images/countries/ir.svg similarity index 100% rename from client/public/images/countries/ir.svg rename to frontend/server/public/images/countries/ir.svg diff --git a/client/public/images/countries/is.svg b/frontend/server/public/images/countries/is.svg similarity index 100% rename from client/public/images/countries/is.svg rename to frontend/server/public/images/countries/is.svg diff --git a/client/public/images/countries/it.svg b/frontend/server/public/images/countries/it.svg similarity index 100% rename from client/public/images/countries/it.svg rename to frontend/server/public/images/countries/it.svg diff --git a/client/public/images/countries/je.svg b/frontend/server/public/images/countries/je.svg similarity index 100% rename from client/public/images/countries/je.svg rename to frontend/server/public/images/countries/je.svg diff --git a/client/public/images/countries/jm.svg b/frontend/server/public/images/countries/jm.svg similarity index 100% rename from client/public/images/countries/jm.svg rename to frontend/server/public/images/countries/jm.svg diff --git a/client/public/images/countries/jo.svg b/frontend/server/public/images/countries/jo.svg similarity index 100% rename from client/public/images/countries/jo.svg rename to frontend/server/public/images/countries/jo.svg diff --git a/client/public/images/countries/jp.svg b/frontend/server/public/images/countries/jp.svg similarity index 100% rename from client/public/images/countries/jp.svg rename to frontend/server/public/images/countries/jp.svg diff --git a/client/public/images/countries/ke.svg b/frontend/server/public/images/countries/ke.svg similarity index 100% rename from client/public/images/countries/ke.svg rename to frontend/server/public/images/countries/ke.svg diff --git a/client/public/images/countries/kg.svg b/frontend/server/public/images/countries/kg.svg similarity index 100% rename from client/public/images/countries/kg.svg rename to frontend/server/public/images/countries/kg.svg diff --git a/client/public/images/countries/kh.svg b/frontend/server/public/images/countries/kh.svg similarity index 100% rename from client/public/images/countries/kh.svg rename to frontend/server/public/images/countries/kh.svg diff --git a/client/public/images/countries/ki.svg b/frontend/server/public/images/countries/ki.svg similarity index 100% rename from client/public/images/countries/ki.svg rename to frontend/server/public/images/countries/ki.svg diff --git a/client/public/images/countries/km.svg b/frontend/server/public/images/countries/km.svg similarity index 100% rename from client/public/images/countries/km.svg rename to frontend/server/public/images/countries/km.svg diff --git a/client/public/images/countries/kn.svg b/frontend/server/public/images/countries/kn.svg similarity index 100% rename from client/public/images/countries/kn.svg rename to frontend/server/public/images/countries/kn.svg diff --git a/client/public/images/countries/kp.svg b/frontend/server/public/images/countries/kp.svg similarity index 100% rename from client/public/images/countries/kp.svg rename to frontend/server/public/images/countries/kp.svg diff --git a/client/public/images/countries/kr.svg b/frontend/server/public/images/countries/kr.svg similarity index 100% rename from client/public/images/countries/kr.svg rename to frontend/server/public/images/countries/kr.svg diff --git a/client/public/images/countries/kw.svg b/frontend/server/public/images/countries/kw.svg similarity index 100% rename from client/public/images/countries/kw.svg rename to frontend/server/public/images/countries/kw.svg diff --git a/client/public/images/countries/ky.svg b/frontend/server/public/images/countries/ky.svg similarity index 100% rename from client/public/images/countries/ky.svg rename to frontend/server/public/images/countries/ky.svg diff --git a/client/public/images/countries/kz.svg b/frontend/server/public/images/countries/kz.svg similarity index 100% rename from client/public/images/countries/kz.svg rename to frontend/server/public/images/countries/kz.svg diff --git a/client/public/images/countries/la.svg b/frontend/server/public/images/countries/la.svg similarity index 100% rename from client/public/images/countries/la.svg rename to frontend/server/public/images/countries/la.svg diff --git a/client/public/images/countries/lb.svg b/frontend/server/public/images/countries/lb.svg similarity index 100% rename from client/public/images/countries/lb.svg rename to frontend/server/public/images/countries/lb.svg diff --git a/client/public/images/countries/lc.svg b/frontend/server/public/images/countries/lc.svg similarity index 100% rename from client/public/images/countries/lc.svg rename to frontend/server/public/images/countries/lc.svg diff --git a/client/public/images/countries/li.svg b/frontend/server/public/images/countries/li.svg similarity index 100% rename from client/public/images/countries/li.svg rename to frontend/server/public/images/countries/li.svg diff --git a/client/public/images/countries/lk.svg b/frontend/server/public/images/countries/lk.svg similarity index 100% rename from client/public/images/countries/lk.svg rename to frontend/server/public/images/countries/lk.svg diff --git a/client/public/images/countries/lr.svg b/frontend/server/public/images/countries/lr.svg similarity index 100% rename from client/public/images/countries/lr.svg rename to frontend/server/public/images/countries/lr.svg diff --git a/client/public/images/countries/ls.svg b/frontend/server/public/images/countries/ls.svg similarity index 100% rename from client/public/images/countries/ls.svg rename to frontend/server/public/images/countries/ls.svg diff --git a/client/public/images/countries/lt.svg b/frontend/server/public/images/countries/lt.svg similarity index 100% rename from client/public/images/countries/lt.svg rename to frontend/server/public/images/countries/lt.svg diff --git a/client/public/images/countries/lu.svg b/frontend/server/public/images/countries/lu.svg similarity index 100% rename from client/public/images/countries/lu.svg rename to frontend/server/public/images/countries/lu.svg diff --git a/client/public/images/countries/lv.svg b/frontend/server/public/images/countries/lv.svg similarity index 100% rename from client/public/images/countries/lv.svg rename to frontend/server/public/images/countries/lv.svg diff --git a/client/public/images/countries/ly.svg b/frontend/server/public/images/countries/ly.svg similarity index 100% rename from client/public/images/countries/ly.svg rename to frontend/server/public/images/countries/ly.svg diff --git a/client/public/images/countries/ma.svg b/frontend/server/public/images/countries/ma.svg similarity index 100% rename from client/public/images/countries/ma.svg rename to frontend/server/public/images/countries/ma.svg diff --git a/client/public/images/countries/mc.svg b/frontend/server/public/images/countries/mc.svg similarity index 100% rename from client/public/images/countries/mc.svg rename to frontend/server/public/images/countries/mc.svg diff --git a/client/public/images/countries/md.svg b/frontend/server/public/images/countries/md.svg similarity index 100% rename from client/public/images/countries/md.svg rename to frontend/server/public/images/countries/md.svg diff --git a/client/public/images/countries/me.svg b/frontend/server/public/images/countries/me.svg similarity index 100% rename from client/public/images/countries/me.svg rename to frontend/server/public/images/countries/me.svg diff --git a/client/public/images/countries/mf.svg b/frontend/server/public/images/countries/mf.svg similarity index 100% rename from client/public/images/countries/mf.svg rename to frontend/server/public/images/countries/mf.svg diff --git a/client/public/images/countries/mg.svg b/frontend/server/public/images/countries/mg.svg similarity index 100% rename from client/public/images/countries/mg.svg rename to frontend/server/public/images/countries/mg.svg diff --git a/client/public/images/countries/mh.svg b/frontend/server/public/images/countries/mh.svg similarity index 100% rename from client/public/images/countries/mh.svg rename to frontend/server/public/images/countries/mh.svg diff --git a/client/public/images/countries/mk.svg b/frontend/server/public/images/countries/mk.svg similarity index 100% rename from client/public/images/countries/mk.svg rename to frontend/server/public/images/countries/mk.svg diff --git a/client/public/images/countries/ml.svg b/frontend/server/public/images/countries/ml.svg similarity index 100% rename from client/public/images/countries/ml.svg rename to frontend/server/public/images/countries/ml.svg diff --git a/client/public/images/countries/mm.svg b/frontend/server/public/images/countries/mm.svg similarity index 100% rename from client/public/images/countries/mm.svg rename to frontend/server/public/images/countries/mm.svg diff --git a/client/public/images/countries/mn.svg b/frontend/server/public/images/countries/mn.svg similarity index 100% rename from client/public/images/countries/mn.svg rename to frontend/server/public/images/countries/mn.svg diff --git a/client/public/images/countries/mo.svg b/frontend/server/public/images/countries/mo.svg similarity index 100% rename from client/public/images/countries/mo.svg rename to frontend/server/public/images/countries/mo.svg diff --git a/client/public/images/countries/mp.svg b/frontend/server/public/images/countries/mp.svg similarity index 100% rename from client/public/images/countries/mp.svg rename to frontend/server/public/images/countries/mp.svg diff --git a/client/public/images/countries/mq.svg b/frontend/server/public/images/countries/mq.svg similarity index 100% rename from client/public/images/countries/mq.svg rename to frontend/server/public/images/countries/mq.svg diff --git a/client/public/images/countries/mr.svg b/frontend/server/public/images/countries/mr.svg similarity index 100% rename from client/public/images/countries/mr.svg rename to frontend/server/public/images/countries/mr.svg diff --git a/client/public/images/countries/ms.svg b/frontend/server/public/images/countries/ms.svg similarity index 100% rename from client/public/images/countries/ms.svg rename to frontend/server/public/images/countries/ms.svg diff --git a/client/public/images/countries/mt.svg b/frontend/server/public/images/countries/mt.svg similarity index 100% rename from client/public/images/countries/mt.svg rename to frontend/server/public/images/countries/mt.svg diff --git a/client/public/images/countries/mu.svg b/frontend/server/public/images/countries/mu.svg similarity index 100% rename from client/public/images/countries/mu.svg rename to frontend/server/public/images/countries/mu.svg diff --git a/client/public/images/countries/mv.svg b/frontend/server/public/images/countries/mv.svg similarity index 100% rename from client/public/images/countries/mv.svg rename to frontend/server/public/images/countries/mv.svg diff --git a/client/public/images/countries/mw.svg b/frontend/server/public/images/countries/mw.svg similarity index 100% rename from client/public/images/countries/mw.svg rename to frontend/server/public/images/countries/mw.svg diff --git a/client/public/images/countries/mx.svg b/frontend/server/public/images/countries/mx.svg similarity index 100% rename from client/public/images/countries/mx.svg rename to frontend/server/public/images/countries/mx.svg diff --git a/client/public/images/countries/my.svg b/frontend/server/public/images/countries/my.svg similarity index 100% rename from client/public/images/countries/my.svg rename to frontend/server/public/images/countries/my.svg diff --git a/client/public/images/countries/mz.svg b/frontend/server/public/images/countries/mz.svg similarity index 100% rename from client/public/images/countries/mz.svg rename to frontend/server/public/images/countries/mz.svg diff --git a/client/public/images/countries/na.svg b/frontend/server/public/images/countries/na.svg similarity index 100% rename from client/public/images/countries/na.svg rename to frontend/server/public/images/countries/na.svg diff --git a/client/public/images/countries/nc.svg b/frontend/server/public/images/countries/nc.svg similarity index 100% rename from client/public/images/countries/nc.svg rename to frontend/server/public/images/countries/nc.svg diff --git a/client/public/images/countries/ne.svg b/frontend/server/public/images/countries/ne.svg similarity index 100% rename from client/public/images/countries/ne.svg rename to frontend/server/public/images/countries/ne.svg diff --git a/client/public/images/countries/nf.svg b/frontend/server/public/images/countries/nf.svg similarity index 100% rename from client/public/images/countries/nf.svg rename to frontend/server/public/images/countries/nf.svg diff --git a/client/public/images/countries/ng.svg b/frontend/server/public/images/countries/ng.svg similarity index 100% rename from client/public/images/countries/ng.svg rename to frontend/server/public/images/countries/ng.svg diff --git a/client/public/images/countries/ni.svg b/frontend/server/public/images/countries/ni.svg similarity index 100% rename from client/public/images/countries/ni.svg rename to frontend/server/public/images/countries/ni.svg diff --git a/client/public/images/countries/nl.svg b/frontend/server/public/images/countries/nl.svg similarity index 100% rename from client/public/images/countries/nl.svg rename to frontend/server/public/images/countries/nl.svg diff --git a/client/public/images/countries/no.svg b/frontend/server/public/images/countries/no.svg similarity index 100% rename from client/public/images/countries/no.svg rename to frontend/server/public/images/countries/no.svg diff --git a/client/public/images/countries/np.svg b/frontend/server/public/images/countries/np.svg similarity index 100% rename from client/public/images/countries/np.svg rename to frontend/server/public/images/countries/np.svg diff --git a/client/public/images/countries/nr.svg b/frontend/server/public/images/countries/nr.svg similarity index 100% rename from client/public/images/countries/nr.svg rename to frontend/server/public/images/countries/nr.svg diff --git a/client/public/images/countries/nu.svg b/frontend/server/public/images/countries/nu.svg similarity index 100% rename from client/public/images/countries/nu.svg rename to frontend/server/public/images/countries/nu.svg diff --git a/client/public/images/countries/nz.svg b/frontend/server/public/images/countries/nz.svg similarity index 100% rename from client/public/images/countries/nz.svg rename to frontend/server/public/images/countries/nz.svg diff --git a/client/public/images/countries/om.svg b/frontend/server/public/images/countries/om.svg similarity index 100% rename from client/public/images/countries/om.svg rename to frontend/server/public/images/countries/om.svg diff --git a/client/public/images/countries/pa.svg b/frontend/server/public/images/countries/pa.svg similarity index 100% rename from client/public/images/countries/pa.svg rename to frontend/server/public/images/countries/pa.svg diff --git a/client/public/images/countries/pe.svg b/frontend/server/public/images/countries/pe.svg similarity index 100% rename from client/public/images/countries/pe.svg rename to frontend/server/public/images/countries/pe.svg diff --git a/client/public/images/countries/pf.svg b/frontend/server/public/images/countries/pf.svg similarity index 100% rename from client/public/images/countries/pf.svg rename to frontend/server/public/images/countries/pf.svg diff --git a/client/public/images/countries/pg.svg b/frontend/server/public/images/countries/pg.svg similarity index 100% rename from client/public/images/countries/pg.svg rename to frontend/server/public/images/countries/pg.svg diff --git a/client/public/images/countries/ph.svg b/frontend/server/public/images/countries/ph.svg similarity index 100% rename from client/public/images/countries/ph.svg rename to frontend/server/public/images/countries/ph.svg diff --git a/client/public/images/countries/pk.svg b/frontend/server/public/images/countries/pk.svg similarity index 100% rename from client/public/images/countries/pk.svg rename to frontend/server/public/images/countries/pk.svg diff --git a/client/public/images/countries/pl.svg b/frontend/server/public/images/countries/pl.svg similarity index 100% rename from client/public/images/countries/pl.svg rename to frontend/server/public/images/countries/pl.svg diff --git a/client/public/images/countries/pm.svg b/frontend/server/public/images/countries/pm.svg similarity index 100% rename from client/public/images/countries/pm.svg rename to frontend/server/public/images/countries/pm.svg diff --git a/client/public/images/countries/pn.svg b/frontend/server/public/images/countries/pn.svg similarity index 100% rename from client/public/images/countries/pn.svg rename to frontend/server/public/images/countries/pn.svg diff --git a/client/public/images/countries/pr.svg b/frontend/server/public/images/countries/pr.svg similarity index 100% rename from client/public/images/countries/pr.svg rename to frontend/server/public/images/countries/pr.svg diff --git a/client/public/images/countries/ps.svg b/frontend/server/public/images/countries/ps.svg similarity index 100% rename from client/public/images/countries/ps.svg rename to frontend/server/public/images/countries/ps.svg diff --git a/client/public/images/countries/pt.svg b/frontend/server/public/images/countries/pt.svg similarity index 100% rename from client/public/images/countries/pt.svg rename to frontend/server/public/images/countries/pt.svg diff --git a/client/public/images/countries/pw.svg b/frontend/server/public/images/countries/pw.svg similarity index 100% rename from client/public/images/countries/pw.svg rename to frontend/server/public/images/countries/pw.svg diff --git a/client/public/images/countries/py.svg b/frontend/server/public/images/countries/py.svg similarity index 100% rename from client/public/images/countries/py.svg rename to frontend/server/public/images/countries/py.svg diff --git a/client/public/images/countries/qa.svg b/frontend/server/public/images/countries/qa.svg similarity index 100% rename from client/public/images/countries/qa.svg rename to frontend/server/public/images/countries/qa.svg diff --git a/client/public/images/countries/re.svg b/frontend/server/public/images/countries/re.svg similarity index 100% rename from client/public/images/countries/re.svg rename to frontend/server/public/images/countries/re.svg diff --git a/client/public/images/countries/red.svg b/frontend/server/public/images/countries/red.svg similarity index 100% rename from client/public/images/countries/red.svg rename to frontend/server/public/images/countries/red.svg diff --git a/client/public/images/countries/ro.svg b/frontend/server/public/images/countries/ro.svg similarity index 100% rename from client/public/images/countries/ro.svg rename to frontend/server/public/images/countries/ro.svg diff --git a/client/public/images/countries/rs.svg b/frontend/server/public/images/countries/rs.svg similarity index 100% rename from client/public/images/countries/rs.svg rename to frontend/server/public/images/countries/rs.svg diff --git a/client/public/images/countries/ru.svg b/frontend/server/public/images/countries/ru.svg similarity index 100% rename from client/public/images/countries/ru.svg rename to frontend/server/public/images/countries/ru.svg diff --git a/client/public/images/countries/rw.svg b/frontend/server/public/images/countries/rw.svg similarity index 100% rename from client/public/images/countries/rw.svg rename to frontend/server/public/images/countries/rw.svg diff --git a/client/public/images/countries/sa.svg b/frontend/server/public/images/countries/sa.svg similarity index 100% rename from client/public/images/countries/sa.svg rename to frontend/server/public/images/countries/sa.svg diff --git a/client/public/images/countries/sb.svg b/frontend/server/public/images/countries/sb.svg similarity index 100% rename from client/public/images/countries/sb.svg rename to frontend/server/public/images/countries/sb.svg diff --git a/client/public/images/countries/sc.svg b/frontend/server/public/images/countries/sc.svg similarity index 100% rename from client/public/images/countries/sc.svg rename to frontend/server/public/images/countries/sc.svg diff --git a/client/public/images/countries/sd.svg b/frontend/server/public/images/countries/sd.svg similarity index 100% rename from client/public/images/countries/sd.svg rename to frontend/server/public/images/countries/sd.svg diff --git a/client/public/images/countries/se.svg b/frontend/server/public/images/countries/se.svg similarity index 100% rename from client/public/images/countries/se.svg rename to frontend/server/public/images/countries/se.svg diff --git a/client/public/images/countries/sg.svg b/frontend/server/public/images/countries/sg.svg similarity index 100% rename from client/public/images/countries/sg.svg rename to frontend/server/public/images/countries/sg.svg diff --git a/client/public/images/countries/sh.svg b/frontend/server/public/images/countries/sh.svg similarity index 100% rename from client/public/images/countries/sh.svg rename to frontend/server/public/images/countries/sh.svg diff --git a/client/public/images/countries/si.svg b/frontend/server/public/images/countries/si.svg similarity index 100% rename from client/public/images/countries/si.svg rename to frontend/server/public/images/countries/si.svg diff --git a/client/public/images/countries/sj.svg b/frontend/server/public/images/countries/sj.svg similarity index 100% rename from client/public/images/countries/sj.svg rename to frontend/server/public/images/countries/sj.svg diff --git a/client/public/images/countries/sk.svg b/frontend/server/public/images/countries/sk.svg similarity index 100% rename from client/public/images/countries/sk.svg rename to frontend/server/public/images/countries/sk.svg diff --git a/client/public/images/countries/sl.svg b/frontend/server/public/images/countries/sl.svg similarity index 100% rename from client/public/images/countries/sl.svg rename to frontend/server/public/images/countries/sl.svg diff --git a/client/public/images/countries/sm.svg b/frontend/server/public/images/countries/sm.svg similarity index 100% rename from client/public/images/countries/sm.svg rename to frontend/server/public/images/countries/sm.svg diff --git a/client/public/images/countries/sn.svg b/frontend/server/public/images/countries/sn.svg similarity index 100% rename from client/public/images/countries/sn.svg rename to frontend/server/public/images/countries/sn.svg diff --git a/client/public/images/countries/so.svg b/frontend/server/public/images/countries/so.svg similarity index 100% rename from client/public/images/countries/so.svg rename to frontend/server/public/images/countries/so.svg diff --git a/client/public/images/countries/social.svg b/frontend/server/public/images/countries/social.svg similarity index 100% rename from client/public/images/countries/social.svg rename to frontend/server/public/images/countries/social.svg diff --git a/client/public/images/countries/sr.svg b/frontend/server/public/images/countries/sr.svg similarity index 100% rename from client/public/images/countries/sr.svg rename to frontend/server/public/images/countries/sr.svg diff --git a/client/public/images/countries/ss.svg b/frontend/server/public/images/countries/ss.svg similarity index 100% rename from client/public/images/countries/ss.svg rename to frontend/server/public/images/countries/ss.svg diff --git a/client/public/images/countries/st.svg b/frontend/server/public/images/countries/st.svg similarity index 100% rename from client/public/images/countries/st.svg rename to frontend/server/public/images/countries/st.svg diff --git a/client/public/images/countries/sv.svg b/frontend/server/public/images/countries/sv.svg similarity index 100% rename from client/public/images/countries/sv.svg rename to frontend/server/public/images/countries/sv.svg diff --git a/client/public/images/countries/sx.svg b/frontend/server/public/images/countries/sx.svg similarity index 100% rename from client/public/images/countries/sx.svg rename to frontend/server/public/images/countries/sx.svg diff --git a/client/public/images/countries/sy.svg b/frontend/server/public/images/countries/sy.svg similarity index 100% rename from client/public/images/countries/sy.svg rename to frontend/server/public/images/countries/sy.svg diff --git a/client/public/images/countries/sz.svg b/frontend/server/public/images/countries/sz.svg similarity index 100% rename from client/public/images/countries/sz.svg rename to frontend/server/public/images/countries/sz.svg diff --git a/client/public/images/countries/ta.svg b/frontend/server/public/images/countries/ta.svg similarity index 100% rename from client/public/images/countries/ta.svg rename to frontend/server/public/images/countries/ta.svg diff --git a/client/public/images/countries/tc.svg b/frontend/server/public/images/countries/tc.svg similarity index 100% rename from client/public/images/countries/tc.svg rename to frontend/server/public/images/countries/tc.svg diff --git a/client/public/images/countries/td.svg b/frontend/server/public/images/countries/td.svg similarity index 100% rename from client/public/images/countries/td.svg rename to frontend/server/public/images/countries/td.svg diff --git a/client/public/images/countries/tf.svg b/frontend/server/public/images/countries/tf.svg similarity index 100% rename from client/public/images/countries/tf.svg rename to frontend/server/public/images/countries/tf.svg diff --git a/client/public/images/countries/tg.svg b/frontend/server/public/images/countries/tg.svg similarity index 100% rename from client/public/images/countries/tg.svg rename to frontend/server/public/images/countries/tg.svg diff --git a/client/public/images/countries/th.svg b/frontend/server/public/images/countries/th.svg similarity index 100% rename from client/public/images/countries/th.svg rename to frontend/server/public/images/countries/th.svg diff --git a/client/public/images/countries/third.svg b/frontend/server/public/images/countries/third.svg similarity index 100% rename from client/public/images/countries/third.svg rename to frontend/server/public/images/countries/third.svg diff --git a/client/public/images/countries/tj.svg b/frontend/server/public/images/countries/tj.svg similarity index 100% rename from client/public/images/countries/tj.svg rename to frontend/server/public/images/countries/tj.svg diff --git a/client/public/images/countries/tk.svg b/frontend/server/public/images/countries/tk.svg similarity index 100% rename from client/public/images/countries/tk.svg rename to frontend/server/public/images/countries/tk.svg diff --git a/client/public/images/countries/tl.svg b/frontend/server/public/images/countries/tl.svg similarity index 100% rename from client/public/images/countries/tl.svg rename to frontend/server/public/images/countries/tl.svg diff --git a/client/public/images/countries/tm.svg b/frontend/server/public/images/countries/tm.svg similarity index 100% rename from client/public/images/countries/tm.svg rename to frontend/server/public/images/countries/tm.svg diff --git a/client/public/images/countries/tn.svg b/frontend/server/public/images/countries/tn.svg similarity index 100% rename from client/public/images/countries/tn.svg rename to frontend/server/public/images/countries/tn.svg diff --git a/client/public/images/countries/to.svg b/frontend/server/public/images/countries/to.svg similarity index 100% rename from client/public/images/countries/to.svg rename to frontend/server/public/images/countries/to.svg diff --git a/client/public/images/countries/tr.svg b/frontend/server/public/images/countries/tr.svg similarity index 100% rename from client/public/images/countries/tr.svg rename to frontend/server/public/images/countries/tr.svg diff --git a/client/public/images/countries/tt.svg b/frontend/server/public/images/countries/tt.svg similarity index 100% rename from client/public/images/countries/tt.svg rename to frontend/server/public/images/countries/tt.svg diff --git a/client/public/images/countries/tv.svg b/frontend/server/public/images/countries/tv.svg similarity index 100% rename from client/public/images/countries/tv.svg rename to frontend/server/public/images/countries/tv.svg diff --git a/client/public/images/countries/tw.svg b/frontend/server/public/images/countries/tw.svg similarity index 100% rename from client/public/images/countries/tw.svg rename to frontend/server/public/images/countries/tw.svg diff --git a/client/public/images/countries/tz.svg b/frontend/server/public/images/countries/tz.svg similarity index 100% rename from client/public/images/countries/tz.svg rename to frontend/server/public/images/countries/tz.svg diff --git a/client/public/images/countries/ua.svg b/frontend/server/public/images/countries/ua.svg similarity index 100% rename from client/public/images/countries/ua.svg rename to frontend/server/public/images/countries/ua.svg diff --git a/client/public/images/countries/ug.svg b/frontend/server/public/images/countries/ug.svg similarity index 100% rename from client/public/images/countries/ug.svg rename to frontend/server/public/images/countries/ug.svg diff --git a/client/public/images/countries/um.svg b/frontend/server/public/images/countries/um.svg similarity index 100% rename from client/public/images/countries/um.svg rename to frontend/server/public/images/countries/um.svg diff --git a/client/public/images/countries/un.svg b/frontend/server/public/images/countries/un.svg similarity index 100% rename from client/public/images/countries/un.svg rename to frontend/server/public/images/countries/un.svg diff --git a/client/public/images/countries/unk.svg b/frontend/server/public/images/countries/unk.svg similarity index 100% rename from client/public/images/countries/unk.svg rename to frontend/server/public/images/countries/unk.svg diff --git a/client/public/images/countries/us.svg b/frontend/server/public/images/countries/us.svg similarity index 100% rename from client/public/images/countries/us.svg rename to frontend/server/public/images/countries/us.svg diff --git a/client/public/images/countries/ussr.svg b/frontend/server/public/images/countries/ussr.svg similarity index 100% rename from client/public/images/countries/ussr.svg rename to frontend/server/public/images/countries/ussr.svg diff --git a/client/public/images/countries/uy.svg b/frontend/server/public/images/countries/uy.svg similarity index 100% rename from client/public/images/countries/uy.svg rename to frontend/server/public/images/countries/uy.svg diff --git a/client/public/images/countries/uz.svg b/frontend/server/public/images/countries/uz.svg similarity index 100% rename from client/public/images/countries/uz.svg rename to frontend/server/public/images/countries/uz.svg diff --git a/client/public/images/countries/va.svg b/frontend/server/public/images/countries/va.svg similarity index 100% rename from client/public/images/countries/va.svg rename to frontend/server/public/images/countries/va.svg diff --git a/client/public/images/countries/vc.svg b/frontend/server/public/images/countries/vc.svg similarity index 100% rename from client/public/images/countries/vc.svg rename to frontend/server/public/images/countries/vc.svg diff --git a/client/public/images/countries/ve.svg b/frontend/server/public/images/countries/ve.svg similarity index 100% rename from client/public/images/countries/ve.svg rename to frontend/server/public/images/countries/ve.svg diff --git a/client/public/images/countries/vg.svg b/frontend/server/public/images/countries/vg.svg similarity index 100% rename from client/public/images/countries/vg.svg rename to frontend/server/public/images/countries/vg.svg diff --git a/client/public/images/countries/vi.svg b/frontend/server/public/images/countries/vi.svg similarity index 100% rename from client/public/images/countries/vi.svg rename to frontend/server/public/images/countries/vi.svg diff --git a/client/public/images/countries/vn.svg b/frontend/server/public/images/countries/vn.svg similarity index 100% rename from client/public/images/countries/vn.svg rename to frontend/server/public/images/countries/vn.svg diff --git a/client/public/images/countries/vu.svg b/frontend/server/public/images/countries/vu.svg similarity index 100% rename from client/public/images/countries/vu.svg rename to frontend/server/public/images/countries/vu.svg diff --git a/client/public/images/countries/wf.svg b/frontend/server/public/images/countries/wf.svg similarity index 100% rename from client/public/images/countries/wf.svg rename to frontend/server/public/images/countries/wf.svg diff --git a/client/public/images/countries/ws.svg b/frontend/server/public/images/countries/ws.svg similarity index 100% rename from client/public/images/countries/ws.svg rename to frontend/server/public/images/countries/ws.svg diff --git a/client/public/images/countries/xk.svg b/frontend/server/public/images/countries/xk.svg similarity index 100% rename from client/public/images/countries/xk.svg rename to frontend/server/public/images/countries/xk.svg diff --git a/client/public/images/countries/xx.svg b/frontend/server/public/images/countries/xx.svg similarity index 100% rename from client/public/images/countries/xx.svg rename to frontend/server/public/images/countries/xx.svg diff --git a/client/public/images/countries/ye.svg b/frontend/server/public/images/countries/ye.svg similarity index 100% rename from client/public/images/countries/ye.svg rename to frontend/server/public/images/countries/ye.svg diff --git a/client/public/images/countries/yt.svg b/frontend/server/public/images/countries/yt.svg similarity index 100% rename from client/public/images/countries/yt.svg rename to frontend/server/public/images/countries/yt.svg diff --git a/client/public/images/countries/yug.svg b/frontend/server/public/images/countries/yug.svg similarity index 100% rename from client/public/images/countries/yug.svg rename to frontend/server/public/images/countries/yug.svg diff --git a/client/public/images/countries/za.svg b/frontend/server/public/images/countries/za.svg similarity index 100% rename from client/public/images/countries/za.svg rename to frontend/server/public/images/countries/za.svg diff --git a/client/public/images/countries/zm.svg b/frontend/server/public/images/countries/zm.svg similarity index 100% rename from client/public/images/countries/zm.svg rename to frontend/server/public/images/countries/zm.svg diff --git a/client/public/images/countries/zw.svg b/frontend/server/public/images/countries/zw.svg similarity index 100% rename from client/public/images/countries/zw.svg rename to frontend/server/public/images/countries/zw.svg diff --git a/client/public/images/favicons/android-chrome-192x192.png b/frontend/server/public/images/favicons/android-chrome-192x192.png similarity index 100% rename from client/public/images/favicons/android-chrome-192x192.png rename to frontend/server/public/images/favicons/android-chrome-192x192.png diff --git a/client/public/images/favicons/android-chrome-512x512.png b/frontend/server/public/images/favicons/android-chrome-512x512.png similarity index 100% rename from client/public/images/favicons/android-chrome-512x512.png rename to frontend/server/public/images/favicons/android-chrome-512x512.png diff --git a/client/public/images/favicons/apple-touch-icon.png b/frontend/server/public/images/favicons/apple-touch-icon.png similarity index 100% rename from client/public/images/favicons/apple-touch-icon.png rename to frontend/server/public/images/favicons/apple-touch-icon.png diff --git a/client/public/images/favicons/favicon-16x16.png b/frontend/server/public/images/favicons/favicon-16x16.png similarity index 100% rename from client/public/images/favicons/favicon-16x16.png rename to frontend/server/public/images/favicons/favicon-16x16.png diff --git a/client/public/images/favicons/favicon-32x32.png b/frontend/server/public/images/favicons/favicon-32x32.png similarity index 100% rename from client/public/images/favicons/favicon-32x32.png rename to frontend/server/public/images/favicons/favicon-32x32.png diff --git a/client/public/images/favicons/favicon.ico b/frontend/server/public/images/favicons/favicon.ico similarity index 100% rename from client/public/images/favicons/favicon.ico rename to frontend/server/public/images/favicons/favicon.ico diff --git a/client/public/images/favicons/site.webmanifest b/frontend/server/public/images/favicons/site.webmanifest similarity index 100% rename from client/public/images/favicons/site.webmanifest rename to frontend/server/public/images/favicons/site.webmanifest diff --git a/client/public/images/icon-round.png b/frontend/server/public/images/icon-round.png similarity index 100% rename from client/public/images/icon-round.png rename to frontend/server/public/images/icon-round.png diff --git a/client/public/images/icon.png b/frontend/server/public/images/icon.png similarity index 100% rename from client/public/images/icon.png rename to frontend/server/public/images/icon.png diff --git a/client/public/images/olympus-4112x4112.png b/frontend/server/public/images/olympus-4112x4112.png similarity index 100% rename from client/public/images/olympus-4112x4112.png rename to frontend/server/public/images/olympus-4112x4112.png diff --git a/client/public/images/olympus-500x500.png b/frontend/server/public/images/olympus-500x500.png similarity index 100% rename from client/public/images/olympus-500x500.png rename to frontend/server/public/images/olympus-500x500.png diff --git a/client/public/images/units/a-10.png b/frontend/server/public/images/units/a-10.png similarity index 100% rename from client/public/images/units/a-10.png rename to frontend/server/public/images/units/a-10.png diff --git a/client/public/images/units/a-20.png b/frontend/server/public/images/units/a-20.png similarity index 100% rename from client/public/images/units/a-20.png rename to frontend/server/public/images/units/a-20.png diff --git a/client/public/images/units/a-29.png b/frontend/server/public/images/units/a-29.png similarity index 100% rename from client/public/images/units/a-29.png rename to frontend/server/public/images/units/a-29.png diff --git a/client/public/images/units/a-4.png b/frontend/server/public/images/units/a-4.png similarity index 100% rename from client/public/images/units/a-4.png rename to frontend/server/public/images/units/a-4.png diff --git a/client/public/images/units/a-400.png b/frontend/server/public/images/units/a-400.png similarity index 100% rename from client/public/images/units/a-400.png rename to frontend/server/public/images/units/a-400.png diff --git a/client/public/images/units/a-50.png b/frontend/server/public/images/units/a-50.png similarity index 100% rename from client/public/images/units/a-50.png rename to frontend/server/public/images/units/a-50.png diff --git a/client/public/images/units/a-6.png b/frontend/server/public/images/units/a-6.png similarity index 100% rename from client/public/images/units/a-6.png rename to frontend/server/public/images/units/a-6.png diff --git a/client/public/images/units/ah-1.png b/frontend/server/public/images/units/ah-1.png similarity index 100% rename from client/public/images/units/ah-1.png rename to frontend/server/public/images/units/ah-1.png diff --git a/client/public/images/units/ah-64.png b/frontend/server/public/images/units/ah-64.png similarity index 100% rename from client/public/images/units/ah-64.png rename to frontend/server/public/images/units/ah-64.png diff --git a/client/public/images/units/airUnit.png b/frontend/server/public/images/units/airUnit.png similarity index 100% rename from client/public/images/units/airUnit.png rename to frontend/server/public/images/units/airUnit.png diff --git a/client/public/images/units/airliner2engine.png b/frontend/server/public/images/units/airliner2engine.png similarity index 100% rename from client/public/images/units/airliner2engine.png rename to frontend/server/public/images/units/airliner2engine.png diff --git a/client/public/images/units/an-26.png b/frontend/server/public/images/units/an-26.png similarity index 100% rename from client/public/images/units/an-26.png rename to frontend/server/public/images/units/an-26.png diff --git a/client/public/images/units/av8bna.png b/frontend/server/public/images/units/av8bna.png similarity index 100% rename from client/public/images/units/av8bna.png rename to frontend/server/public/images/units/av8bna.png diff --git a/client/public/images/units/b-1.png b/frontend/server/public/images/units/b-1.png similarity index 100% rename from client/public/images/units/b-1.png rename to frontend/server/public/images/units/b-1.png diff --git a/client/public/images/units/b-17.png b/frontend/server/public/images/units/b-17.png similarity index 100% rename from client/public/images/units/b-17.png rename to frontend/server/public/images/units/b-17.png diff --git a/client/public/images/units/b-2.png b/frontend/server/public/images/units/b-2.png similarity index 100% rename from client/public/images/units/b-2.png rename to frontend/server/public/images/units/b-2.png diff --git a/client/public/images/units/b-52.png b/frontend/server/public/images/units/b-52.png similarity index 100% rename from client/public/images/units/b-52.png rename to frontend/server/public/images/units/b-52.png diff --git a/client/public/images/units/b707.png b/frontend/server/public/images/units/b707.png similarity index 100% rename from client/public/images/units/b707.png rename to frontend/server/public/images/units/b707.png diff --git a/client/public/images/units/bf109.png b/frontend/server/public/images/units/bf109.png similarity index 100% rename from client/public/images/units/bf109.png rename to frontend/server/public/images/units/bf109.png diff --git a/client/public/images/units/c-101.png b/frontend/server/public/images/units/c-101.png similarity index 100% rename from client/public/images/units/c-101.png rename to frontend/server/public/images/units/c-101.png diff --git a/client/public/images/units/c-130.png b/frontend/server/public/images/units/c-130.png similarity index 100% rename from client/public/images/units/c-130.png rename to frontend/server/public/images/units/c-130.png diff --git a/client/public/images/units/c-17.png b/frontend/server/public/images/units/c-17.png similarity index 100% rename from client/public/images/units/c-17.png rename to frontend/server/public/images/units/c-17.png diff --git a/client/public/images/units/c-5.png b/frontend/server/public/images/units/c-5.png similarity index 100% rename from client/public/images/units/c-5.png rename to frontend/server/public/images/units/c-5.png diff --git a/client/public/images/units/ch-47.png b/frontend/server/public/images/units/ch-47.png similarity index 100% rename from client/public/images/units/ch-47.png rename to frontend/server/public/images/units/ch-47.png diff --git a/client/public/images/units/ch-53.png b/frontend/server/public/images/units/ch-53.png similarity index 100% rename from client/public/images/units/ch-53.png rename to frontend/server/public/images/units/ch-53.png diff --git a/client/public/images/units/e-2.png b/frontend/server/public/images/units/e-2.png similarity index 100% rename from client/public/images/units/e-2.png rename to frontend/server/public/images/units/e-2.png diff --git a/client/public/images/units/e-3.png b/frontend/server/public/images/units/e-3.png similarity index 100% rename from client/public/images/units/e-3.png rename to frontend/server/public/images/units/e-3.png diff --git a/client/public/images/units/eurofighter.png b/frontend/server/public/images/units/eurofighter.png similarity index 100% rename from client/public/images/units/eurofighter.png rename to frontend/server/public/images/units/eurofighter.png diff --git a/client/public/images/units/f-1.png b/frontend/server/public/images/units/f-1.png similarity index 100% rename from client/public/images/units/f-1.png rename to frontend/server/public/images/units/f-1.png diff --git a/client/public/images/units/f-111.png b/frontend/server/public/images/units/f-111.png similarity index 100% rename from client/public/images/units/f-111.png rename to frontend/server/public/images/units/f-111.png diff --git a/client/public/images/units/f-117.png b/frontend/server/public/images/units/f-117.png similarity index 100% rename from client/public/images/units/f-117.png rename to frontend/server/public/images/units/f-117.png diff --git a/client/public/images/units/f-14.png b/frontend/server/public/images/units/f-14.png similarity index 100% rename from client/public/images/units/f-14.png rename to frontend/server/public/images/units/f-14.png diff --git a/client/public/images/units/f-15.png b/frontend/server/public/images/units/f-15.png similarity index 100% rename from client/public/images/units/f-15.png rename to frontend/server/public/images/units/f-15.png diff --git a/client/public/images/units/f-16c.png b/frontend/server/public/images/units/f-16c.png similarity index 100% rename from client/public/images/units/f-16c.png rename to frontend/server/public/images/units/f-16c.png diff --git a/client/public/images/units/f-22.png b/frontend/server/public/images/units/f-22.png similarity index 100% rename from client/public/images/units/f-22.png rename to frontend/server/public/images/units/f-22.png diff --git a/client/public/images/units/f-35.png b/frontend/server/public/images/units/f-35.png similarity index 100% rename from client/public/images/units/f-35.png rename to frontend/server/public/images/units/f-35.png diff --git a/client/public/images/units/f-4.png b/frontend/server/public/images/units/f-4.png similarity index 100% rename from client/public/images/units/f-4.png rename to frontend/server/public/images/units/f-4.png diff --git a/client/public/images/units/f-5.png b/frontend/server/public/images/units/f-5.png similarity index 100% rename from client/public/images/units/f-5.png rename to frontend/server/public/images/units/f-5.png diff --git a/client/public/images/units/f-86.png b/frontend/server/public/images/units/f-86.png similarity index 100% rename from client/public/images/units/f-86.png rename to frontend/server/public/images/units/f-86.png diff --git a/client/public/images/units/fa-18c.png b/frontend/server/public/images/units/fa-18c.png similarity index 100% rename from client/public/images/units/fa-18c.png rename to frontend/server/public/images/units/fa-18c.png diff --git a/client/public/images/units/fw190.png b/frontend/server/public/images/units/fw190.png similarity index 100% rename from client/public/images/units/fw190.png rename to frontend/server/public/images/units/fw190.png diff --git a/client/public/images/units/general1.png b/frontend/server/public/images/units/general1.png similarity index 100% rename from client/public/images/units/general1.png rename to frontend/server/public/images/units/general1.png diff --git a/client/public/images/units/gripen.png b/frontend/server/public/images/units/gripen.png similarity index 100% rename from client/public/images/units/gripen.png rename to frontend/server/public/images/units/gripen.png diff --git a/client/public/images/units/h-6.png b/frontend/server/public/images/units/h-6.png similarity index 100% rename from client/public/images/units/h-6.png rename to frontend/server/public/images/units/h-6.png diff --git a/client/public/images/units/hawk.png b/frontend/server/public/images/units/hawk.png similarity index 100% rename from client/public/images/units/hawk.png rename to frontend/server/public/images/units/hawk.png diff --git a/client/public/images/units/helicopter1.png b/frontend/server/public/images/units/helicopter1.png similarity index 100% rename from client/public/images/units/helicopter1.png rename to frontend/server/public/images/units/helicopter1.png diff --git a/client/public/images/units/i-16.png b/frontend/server/public/images/units/i-16.png similarity index 100% rename from client/public/images/units/i-16.png rename to frontend/server/public/images/units/i-16.png diff --git a/client/public/images/units/il-76.png b/frontend/server/public/images/units/il-76.png similarity index 100% rename from client/public/images/units/il-76.png rename to frontend/server/public/images/units/il-76.png diff --git a/client/public/images/units/j-10.png b/frontend/server/public/images/units/j-10.png similarity index 100% rename from client/public/images/units/j-10.png rename to frontend/server/public/images/units/j-10.png diff --git a/client/public/images/units/j-20.png b/frontend/server/public/images/units/j-20.png similarity index 100% rename from client/public/images/units/j-20.png rename to frontend/server/public/images/units/j-20.png diff --git a/client/public/images/units/j-7.png b/frontend/server/public/images/units/j-7.png similarity index 100% rename from client/public/images/units/j-7.png rename to frontend/server/public/images/units/j-7.png diff --git a/client/public/images/units/jf-17.png b/frontend/server/public/images/units/jf-17.png similarity index 100% rename from client/public/images/units/jf-17.png rename to frontend/server/public/images/units/jf-17.png diff --git a/client/public/images/units/ju-88.png b/frontend/server/public/images/units/ju-88.png similarity index 100% rename from client/public/images/units/ju-88.png rename to frontend/server/public/images/units/ju-88.png diff --git a/client/public/images/units/ka-27.png b/frontend/server/public/images/units/ka-27.png similarity index 100% rename from client/public/images/units/ka-27.png rename to frontend/server/public/images/units/ka-27.png diff --git a/client/public/images/units/ka-50.png b/frontend/server/public/images/units/ka-50.png similarity index 100% rename from client/public/images/units/ka-50.png rename to frontend/server/public/images/units/ka-50.png diff --git a/client/public/images/units/kc-10.png b/frontend/server/public/images/units/kc-10.png similarity index 100% rename from client/public/images/units/kc-10.png rename to frontend/server/public/images/units/kc-10.png diff --git a/client/public/images/units/kc-135.png b/frontend/server/public/images/units/kc-135.png similarity index 100% rename from client/public/images/units/kc-135.png rename to frontend/server/public/images/units/kc-135.png diff --git a/client/public/images/units/l-159.png b/frontend/server/public/images/units/l-159.png similarity index 100% rename from client/public/images/units/l-159.png rename to frontend/server/public/images/units/l-159.png diff --git a/client/public/images/units/l-39.png b/frontend/server/public/images/units/l-39.png similarity index 100% rename from client/public/images/units/l-39.png rename to frontend/server/public/images/units/l-39.png diff --git a/client/public/images/units/m2000.png b/frontend/server/public/images/units/m2000.png similarity index 100% rename from client/public/images/units/m2000.png rename to frontend/server/public/images/units/m2000.png diff --git a/client/public/images/units/mb-339.png b/frontend/server/public/images/units/mb-339.png similarity index 100% rename from client/public/images/units/mb-339.png rename to frontend/server/public/images/units/mb-339.png diff --git a/client/public/images/units/mi-24.png b/frontend/server/public/images/units/mi-24.png similarity index 100% rename from client/public/images/units/mi-24.png rename to frontend/server/public/images/units/mi-24.png diff --git a/client/public/images/units/mi-26.png b/frontend/server/public/images/units/mi-26.png similarity index 100% rename from client/public/images/units/mi-26.png rename to frontend/server/public/images/units/mi-26.png diff --git a/client/public/images/units/mi-28.png b/frontend/server/public/images/units/mi-28.png similarity index 100% rename from client/public/images/units/mi-28.png rename to frontend/server/public/images/units/mi-28.png diff --git a/client/public/images/units/mi-8.png b/frontend/server/public/images/units/mi-8.png similarity index 100% rename from client/public/images/units/mi-8.png rename to frontend/server/public/images/units/mi-8.png diff --git a/client/public/images/units/mig-15.png b/frontend/server/public/images/units/mig-15.png similarity index 100% rename from client/public/images/units/mig-15.png rename to frontend/server/public/images/units/mig-15.png diff --git a/client/public/images/units/mig-19.png b/frontend/server/public/images/units/mig-19.png similarity index 100% rename from client/public/images/units/mig-19.png rename to frontend/server/public/images/units/mig-19.png diff --git a/client/public/images/units/mig-21.png b/frontend/server/public/images/units/mig-21.png similarity index 100% rename from client/public/images/units/mig-21.png rename to frontend/server/public/images/units/mig-21.png diff --git a/client/public/images/units/mig-23.png b/frontend/server/public/images/units/mig-23.png similarity index 100% rename from client/public/images/units/mig-23.png rename to frontend/server/public/images/units/mig-23.png diff --git a/client/public/images/units/mig-25.png b/frontend/server/public/images/units/mig-25.png similarity index 100% rename from client/public/images/units/mig-25.png rename to frontend/server/public/images/units/mig-25.png diff --git a/client/public/images/units/mig-29.png b/frontend/server/public/images/units/mig-29.png similarity index 100% rename from client/public/images/units/mig-29.png rename to frontend/server/public/images/units/mig-29.png diff --git a/client/public/images/units/mosquito.png b/frontend/server/public/images/units/mosquito.png similarity index 100% rename from client/public/images/units/mosquito.png rename to frontend/server/public/images/units/mosquito.png diff --git a/client/public/images/units/oh-58.png b/frontend/server/public/images/units/oh-58.png similarity index 100% rename from client/public/images/units/oh-58.png rename to frontend/server/public/images/units/oh-58.png diff --git a/client/public/images/units/p-47.png b/frontend/server/public/images/units/p-47.png similarity index 100% rename from client/public/images/units/p-47.png rename to frontend/server/public/images/units/p-47.png diff --git a/client/public/images/units/p-51.png b/frontend/server/public/images/units/p-51.png similarity index 100% rename from client/public/images/units/p-51.png rename to frontend/server/public/images/units/p-51.png diff --git a/client/public/images/units/rafale.png b/frontend/server/public/images/units/rafale.png similarity index 100% rename from client/public/images/units/rafale.png rename to frontend/server/public/images/units/rafale.png diff --git a/client/public/images/units/rq-1.png b/frontend/server/public/images/units/rq-1.png similarity index 100% rename from client/public/images/units/rq-1.png rename to frontend/server/public/images/units/rq-1.png diff --git a/client/public/images/units/rq-4.png b/frontend/server/public/images/units/rq-4.png similarity index 100% rename from client/public/images/units/rq-4.png rename to frontend/server/public/images/units/rq-4.png diff --git a/client/public/images/units/s-3.png b/frontend/server/public/images/units/s-3.png similarity index 100% rename from client/public/images/units/s-3.png rename to frontend/server/public/images/units/s-3.png diff --git a/client/public/images/units/sa-342.png b/frontend/server/public/images/units/sa-342.png similarity index 100% rename from client/public/images/units/sa-342.png rename to frontend/server/public/images/units/sa-342.png diff --git a/client/public/images/units/spitfire.png b/frontend/server/public/images/units/spitfire.png similarity index 100% rename from client/public/images/units/spitfire.png rename to frontend/server/public/images/units/spitfire.png diff --git a/client/public/images/units/su-17.png b/frontend/server/public/images/units/su-17.png similarity index 100% rename from client/public/images/units/su-17.png rename to frontend/server/public/images/units/su-17.png diff --git a/client/public/images/units/su-24.png b/frontend/server/public/images/units/su-24.png similarity index 100% rename from client/public/images/units/su-24.png rename to frontend/server/public/images/units/su-24.png diff --git a/client/public/images/units/su-25.png b/frontend/server/public/images/units/su-25.png similarity index 100% rename from client/public/images/units/su-25.png rename to frontend/server/public/images/units/su-25.png diff --git a/client/public/images/units/su-27.png b/frontend/server/public/images/units/su-27.png similarity index 100% rename from client/public/images/units/su-27.png rename to frontend/server/public/images/units/su-27.png diff --git a/client/public/images/units/su-34.png b/frontend/server/public/images/units/su-34.png similarity index 100% rename from client/public/images/units/su-34.png rename to frontend/server/public/images/units/su-34.png diff --git a/client/public/images/units/su-57.png b/frontend/server/public/images/units/su-57.png similarity index 100% rename from client/public/images/units/su-57.png rename to frontend/server/public/images/units/su-57.png diff --git a/client/public/images/units/tornado.png b/frontend/server/public/images/units/tornado.png similarity index 100% rename from client/public/images/units/tornado.png rename to frontend/server/public/images/units/tornado.png diff --git a/client/public/images/units/tu-160.png b/frontend/server/public/images/units/tu-160.png similarity index 100% rename from client/public/images/units/tu-160.png rename to frontend/server/public/images/units/tu-160.png diff --git a/client/public/images/units/tu-22.png b/frontend/server/public/images/units/tu-22.png similarity index 100% rename from client/public/images/units/tu-22.png rename to frontend/server/public/images/units/tu-22.png diff --git a/client/public/images/units/tu-95.png b/frontend/server/public/images/units/tu-95.png similarity index 100% rename from client/public/images/units/tu-95.png rename to frontend/server/public/images/units/tu-95.png diff --git a/client/public/images/units/u-28.png b/frontend/server/public/images/units/u-28.png similarity index 100% rename from client/public/images/units/u-28.png rename to frontend/server/public/images/units/u-28.png diff --git a/client/public/images/units/uh-1.png b/frontend/server/public/images/units/uh-1.png similarity index 100% rename from client/public/images/units/uh-1.png rename to frontend/server/public/images/units/uh-1.png diff --git a/client/public/images/units/uh-60.png b/frontend/server/public/images/units/uh-60.png similarity index 100% rename from client/public/images/units/uh-60.png rename to frontend/server/public/images/units/uh-60.png diff --git a/client/public/images/units/viggen.png b/frontend/server/public/images/units/viggen.png similarity index 100% rename from client/public/images/units/viggen.png rename to frontend/server/public/images/units/viggen.png diff --git a/client/public/images/units/yak-40.png b/frontend/server/public/images/units/yak-40.png similarity index 100% rename from client/public/images/units/yak-40.png rename to frontend/server/public/images/units/yak-40.png diff --git a/client/public/images/units/yak-52.png b/frontend/server/public/images/units/yak-52.png similarity index 100% rename from client/public/images/units/yak-52.png rename to frontend/server/public/images/units/yak-52.png diff --git a/client/public/javascripts/placeholder b/frontend/server/public/javascripts/placeholder similarity index 100% rename from client/public/javascripts/placeholder rename to frontend/server/public/javascripts/placeholder diff --git a/client/plugins/controltips/plugin.json b/frontend/server/public/plugins/controltipsplugin/plugin.json similarity index 100% rename from client/plugins/controltips/plugin.json rename to frontend/server/public/plugins/controltipsplugin/plugin.json diff --git a/client/plugins/controltips/style.css b/frontend/server/public/plugins/controltipsplugin/style.css similarity index 100% rename from client/plugins/controltips/style.css rename to frontend/server/public/plugins/controltipsplugin/style.css diff --git a/client/plugins/databasemanager/index.js b/frontend/server/public/plugins/databasemanager/index.js similarity index 100% rename from client/plugins/databasemanager/index.js rename to frontend/server/public/plugins/databasemanager/index.js diff --git a/frontend/server/public/plugins/databasemanager/plugin.json b/frontend/server/public/plugins/databasemanager/plugin.json new file mode 100644 index 00000000..357d8f13 --- /dev/null +++ b/frontend/server/public/plugins/databasemanager/plugin.json @@ -0,0 +1,6 @@ +{ + "name": "Database Manager", + "version": "0.0.1", + "description": "This plugin allows to edit the unit databases", + "author": "DCSOlympus team" +} \ No newline at end of file diff --git a/client/plugins/databasemanager/style.css b/frontend/server/public/plugins/databasemanager/style.css similarity index 100% rename from client/plugins/databasemanager/style.css rename to frontend/server/public/plugins/databasemanager/style.css diff --git a/client/public/stylesheets/layout/layout.css b/frontend/server/public/stylesheets/layout/layout.css similarity index 100% rename from client/public/stylesheets/layout/layout.css rename to frontend/server/public/stylesheets/layout/layout.css diff --git a/client/public/stylesheets/markers/airbase.css b/frontend/server/public/stylesheets/markers/airbase.css similarity index 100% rename from client/public/stylesheets/markers/airbase.css rename to frontend/server/public/stylesheets/markers/airbase.css diff --git a/client/public/stylesheets/markers/bullseye.css b/frontend/server/public/stylesheets/markers/bullseye.css similarity index 100% rename from client/public/stylesheets/markers/bullseye.css rename to frontend/server/public/stylesheets/markers/bullseye.css diff --git a/client/public/stylesheets/markers/units.css b/frontend/server/public/stylesheets/markers/units.css similarity index 100% rename from client/public/stylesheets/markers/units.css rename to frontend/server/public/stylesheets/markers/units.css diff --git a/client/public/stylesheets/olympus.css b/frontend/server/public/stylesheets/olympus.css similarity index 100% rename from client/public/stylesheets/olympus.css rename to frontend/server/public/stylesheets/olympus.css diff --git a/client/public/stylesheets/other/contextmenus.css b/frontend/server/public/stylesheets/other/contextmenus.css similarity index 85% rename from client/public/stylesheets/other/contextmenus.css rename to frontend/server/public/stylesheets/other/contextmenus.css index 172afdac..fd816bb7 100644 --- a/client/public/stylesheets/other/contextmenus.css +++ b/frontend/server/public/stylesheets/other/contextmenus.css @@ -8,24 +8,20 @@ z-index: 9999; } -#map-contextmenu>div:nth-child(2) { - align-items: center; + + +/* #map-contextmenu>div:nth-child(n+4)>div { + width: 100%; +} */ + +#map-contextmenu .spawn-mode { display: flex; - flex-direction: row; + flex-direction: column; justify-content: space-between; - padding-right: 0px; + row-gap: 5px; } -#map-contextmenu>div:nth-child(3) { - align-items: center; - display: flex; - flex-direction: row; - justify-content: space-between; - padding-right: 0px; -} - -#map-contextmenu>div:nth-child(n+4) { - align-items: center; +.ol-context-menu-panel { display: flex; flex-direction: column; justify-content: space-between; @@ -33,10 +29,6 @@ padding: 20px; } -#map-contextmenu>div:nth-child(n+4)>div { - width: 100%; -} - .contextmenu-advanced-options, .contextmenu-metadata { align-items: center; @@ -143,20 +135,6 @@ padding: 2px 5px; } -/* -.ol-tag-CA { - background-color: #FF000022; -} - -.ol-tag-Radar { - background-color: #00FF0022; -} - -.ol-tag-IR { - background-color: #0000FF22; -} -*/ - .unit-loadout-list { min-width: 0; } @@ -187,7 +165,65 @@ content: " (" attr(data-points) " points)"; } -.upper-bar svg>* { +#spawn-mode-tabs { + align-items: center; + column-gap: 6px; + display: flex; + position: absolute; + right: 0; + top:0; + translate: -6px -100%; + z-index: 9998; +} + +#spawn-mode-tabs button { + align-items: center; + border-bottom:2px solid transparent; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + border-top-left-radius: var(--border-radius-sm); + border-top-right-radius: var(--border-radius-sm); + display: flex; + height:32px; + justify-content: center; + margin:0; + width:38px; +} + +#spawn-mode-tabs button:hover { + background-color: var(--background-steel); +} + +[data-coalition="blue"] + #spawn-mode-tabs button { + border-bottom-color: var(--primary-blue); +} + + +[data-coalition="red"] + #spawn-mode-tabs button { + border-bottom-color: var(--primary-red); +} + + +[data-coalition="neutral"] + #spawn-mode-tabs button { + border-bottom-color: var(--primary-neutral); +} + +#spawn-mode-tabs button svg { + height:24px; + margin:6px; + width:24px; +} + +.upper-bar { + align-items: center; + display: flex; + flex-direction: row; + justify-content: space-between; + padding-right: 0px; +} + +.upper-bar svg>*, +#spawn-mode-tabs button svg * { fill: white; } @@ -200,24 +236,78 @@ margin-left: auto; } +#spawn-history-menu { + align-items: center; + flex-direction: column; + max-height: 300px; + row-gap: 6px; +} + +#spawn-history-menu button { + align-items: center; + column-gap: 6px; + display:flex; + height:32px; + text-align: left; + padding:0; + width:100%; +} + +#spawn-history-menu button span { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +#spawn-history-menu button svg { + border-radius: var(--border-radius-sm); + height:24px; + padding:4px; + width:24px; +} + +#spawn-history-menu button:hover { + background-color: transparent; + text-decoration: underline; +} + +#spawn-history-menu button:hover svg * { + fill:white !important; +} + +#spawn-history-menu button[data-spawned-coalition="blue"] svg { + background-color: var(--primary-blue); +} + +#spawn-history-menu button[data-spawned-coalition="red"] svg { + background-color: var(--primary-red); +} + +#spawn-history-menu button[data-spawned-coalition="neutral"] svg { + background-color: var(--primary-neutral); +} + [data-coalition="blue"]#active-coalition-label, [data-coalition="blue"].deploy-unit-button, [data-coalition="blue"]#spawn-airbase-aircraft-button, -[data-coalition="blue"].create-iads-button { +[data-coalition="blue"].create-iads-button, +[data-coalition="blue"] + #spawn-mode-tabs button.selected { background-color: var(--primary-blue) } [data-coalition="red"]#active-coalition-label, [data-coalition="red"].deploy-unit-button, [data-coalition="red"]#spawn-airbase-aircraft-button, -[data-coalition="red"].create-iads-button { +[data-coalition="red"].create-iads-button, +[data-coalition="red"] + #spawn-mode-tabs button.selected { background-color: var(--primary-red) } [data-coalition="neutral"]#active-coalition-label, [data-coalition="neutral"].deploy-unit-button, [data-coalition="neutral"]#spawn-airbase-aircraft-button, -[data-coalition="neutral"].create-iads-button { +[data-coalition="neutral"].create-iads-button, +[data-coalition="neutral"] + #spawn-mode-tabs button.selected { background-color: var(--primary-neutral) } diff --git a/client/public/stylesheets/other/popup.css b/frontend/server/public/stylesheets/other/popup.css similarity index 100% rename from client/public/stylesheets/other/popup.css rename to frontend/server/public/stylesheets/other/popup.css diff --git a/client/public/stylesheets/other/toolbar.css b/frontend/server/public/stylesheets/other/toolbar.css similarity index 98% rename from client/public/stylesheets/other/toolbar.css rename to frontend/server/public/stylesheets/other/toolbar.css index 8c3ec441..5fdf1490 100644 --- a/client/public/stylesheets/other/toolbar.css +++ b/frontend/server/public/stylesheets/other/toolbar.css @@ -64,7 +64,7 @@ width: 20px; } -#toolbar-container>*:nth-child(3)>svg { +#command-mode-toolbar>svg { display: none; } diff --git a/client/public/stylesheets/panels/connectionstatus.css b/frontend/server/public/stylesheets/panels/connectionstatus.css similarity index 100% rename from client/public/stylesheets/panels/connectionstatus.css rename to frontend/server/public/stylesheets/panels/connectionstatus.css diff --git a/client/public/stylesheets/panels/logpanel.css b/frontend/server/public/stylesheets/panels/logpanel.css similarity index 100% rename from client/public/stylesheets/panels/logpanel.css rename to frontend/server/public/stylesheets/panels/logpanel.css diff --git a/client/public/stylesheets/panels/mouseinfo.css b/frontend/server/public/stylesheets/panels/mouseinfo.css similarity index 100% rename from client/public/stylesheets/panels/mouseinfo.css rename to frontend/server/public/stylesheets/panels/mouseinfo.css diff --git a/client/public/stylesheets/panels/serverstatus.css b/frontend/server/public/stylesheets/panels/serverstatus.css similarity index 100% rename from client/public/stylesheets/panels/serverstatus.css rename to frontend/server/public/stylesheets/panels/serverstatus.css diff --git a/client/public/stylesheets/panels/unitcontrol.css b/frontend/server/public/stylesheets/panels/unitcontrol.css similarity index 96% rename from client/public/stylesheets/panels/unitcontrol.css rename to frontend/server/public/stylesheets/panels/unitcontrol.css index da629696..a5f41c02 100644 --- a/client/public/stylesheets/panels/unitcontrol.css +++ b/frontend/server/public/stylesheets/panels/unitcontrol.css @@ -21,6 +21,17 @@ body.feature-forceShowUnitControlPanel #unit-control-panel { margin: -5px; } +#unit-control-panel h3 .num-selected-units { + margin-left:6px; +} + +#unit-control-panel h3 .num-selected-units::before { + content:"("; +} +#unit-control-panel h3 .num-selected-units::after { + content:")"; +} + #unit-control-panel .ol-option-button button { width: 30px; height: 30px; @@ -44,8 +55,12 @@ body.feature-forceShowUnitControlPanel #unit-control-panel { #rapid-controls { display: flex; flex-direction: column; - row-gap: 5px; height: fit-content; + position: absolute; + right:-10px; + row-gap: 5px; + top:0; + translate: 100% 0; width: fit-content; } @@ -315,7 +330,7 @@ body.feature-forceShowUnitControlPanel #unit-control-panel { #advanced-settings-div>button { background-color: var(--background-grey); - box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.25); + /*box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.25);*/ font-size: 13px; height: 40px; padding: 0 20px; diff --git a/client/public/stylesheets/panels/unitinfo.css b/frontend/server/public/stylesheets/panels/unitinfo.css similarity index 100% rename from client/public/stylesheets/panels/unitinfo.css rename to frontend/server/public/stylesheets/panels/unitinfo.css diff --git a/client/public/stylesheets/panels/unitlist.css b/frontend/server/public/stylesheets/panels/unitlist.css similarity index 100% rename from client/public/stylesheets/panels/unitlist.css rename to frontend/server/public/stylesheets/panels/unitlist.css diff --git a/client/public/stylesheets/style/style.css b/frontend/server/public/stylesheets/style/style.css similarity index 89% rename from client/public/stylesheets/style/style.css rename to frontend/server/public/stylesheets/style/style.css index 72287056..b11b094c 100644 --- a/client/public/stylesheets/style/style.css +++ b/frontend/server/public/stylesheets/style/style.css @@ -171,9 +171,13 @@ button svg.fill-coalition[data-coalition="red"] * { position: relative; } +.ol-select[disabled] { + color: var(--ol-dialog-disabled-text-color); +} + .ol-select>.ol-select-value { align-content: center; - box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); + /*box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);*/ cursor: pointer; display: flex; justify-content: left; @@ -215,6 +219,10 @@ button svg.fill-coalition[data-coalition="red"] * { background-size: 100% 100%; } +.ol-select[disabled]:not(.ol-select-image)>.ol-select-value:after { + opacity: 15%; +} + .ol-select:not(.ol-select-image)>.ol-select-value.ol-select-warning:after { background-image: url("/resources/theme/images/icons/chevron-down-warning.svg") !important; } @@ -271,7 +279,7 @@ button svg.fill-coalition[data-coalition="red"] * { } .ol-select>.ol-select-options div hr { - background-color: white; + background-color: var(--background-hover); height: 1px; width: 100%; } @@ -400,10 +408,8 @@ nav.ol-panel { display: flex; flex-direction: row; height: 58px; -} - -nav.ol-panel> :last-child { - margin-right: 5px; + padding-left: 15px; + padding-right: 15px; } .ol-panel .ol-group { @@ -646,9 +652,9 @@ nav.ol-panel> :last-child { align-items: center; } -.ol-navbar-buttons-group > div { +.ol-navbar-buttons-group>div { align-items: center; - display:flex; + display: flex; flex-direction: row; } @@ -675,9 +681,16 @@ nav.ol-panel> :last-child { border: 1px solid white; } -.ol-navbar-buttons-group button.off svg * { - fill: white !important; /* Higher price than the Soul Stone but inline styling is causing issues. */ - stroke: white !important; /* I'm sorry, daughter. */ +.ol-navbar-buttons-group button.off svg *[fill="black"] { + fill: white !important; +} + +.ol-navbar-buttons-group button.off svg *[stroke="black"] { + stroke: white !important; +} + +.ol-navbar-buttons-group button.red svg *[fill="black"] { + fill: red !important; } .ol-navbar-buttons-group button svg * { @@ -688,53 +701,54 @@ nav.ol-panel> :last-child { .ol-navbar-buttons-group .protectable button:first-of-type { border-bottom-right-radius: 0; border-top-right-radius: 0; - width:28px; + width: 28px; } -.ol-navbar-buttons-group > .protectable > button.lock { +.ol-navbar-buttons-group>.protectable>button.lock { align-items: center; background-color: var(--primary-red); border-bottom-left-radius: 0; border-top-left-radius: 0; - display:flex; + display: flex; justify-content: center; - width:18px; + width: 18px; } -.ol-navbar-buttons-group > .protectable > button[data-protected].lock { +.ol-navbar-buttons-group>.protectable>button[data-protected].lock { background-color: var(--background-grey); } -.ol-navbar-buttons-group > .protectable > button.lock svg { - height:10px; - width:10px; +.ol-navbar-buttons-group>.protectable>button.lock svg { + height: 10px; + width: 10px; } @keyframes lock-prompt { 100% { opacity: 1; } + 0% { opacity: 0; } } -.ol-navbar-buttons-group > .protectable > button[data-protected].lock.prompt svg { +.ol-navbar-buttons-group>.protectable>button[data-protected].lock.prompt svg { animation: lock-prompt .25s alternate infinite; } -.ol-navbar-buttons-group > .protectable > button.lock svg.locked * { - fill:white !important; +.ol-navbar-buttons-group>.protectable>button.lock svg.locked * { + fill: white !important; } -.ol-navbar-buttons-group > .protectable > button:not([data-protected]).lock svg.unlocked, -.ol-navbar-buttons-group > .protectable > button[data-protected].lock svg.locked { - display:flex; +.ol-navbar-buttons-group>.protectable>button:not([data-protected]).lock svg.unlocked, +.ol-navbar-buttons-group>.protectable>button[data-protected].lock svg.locked { + display: flex; } -.ol-navbar-buttons-group > .protectable > button[data-protected].lock svg.unlocked, -.ol-navbar-buttons-group > .protectable > button:not([data-protected]).lock svg.locked { - display:none; +.ol-navbar-buttons-group>.protectable>button[data-protected].lock svg.unlocked, +.ol-navbar-buttons-group>.protectable>button:not([data-protected]).lock svg.locked { + display: none; } @@ -742,8 +756,7 @@ nav.ol-panel> :last-child { #roe-buttons-container button, #reaction-to-threat-buttons-container button, #emissions-countermeasures-buttons-container button, -#shots-scatter-buttons-container button -#shots-intensity-buttons-container button { +#shots-scatter-buttons-container button #shots-intensity-buttons-container button { align-items: center; background-color: transparent; border: 1px solid var(--accent-light-blue); @@ -826,7 +839,7 @@ nav.ol-panel> :last-child { width: auto; } } - + #splash-content::after { background-color: var(--background-steel); content: ""; @@ -1022,7 +1035,7 @@ nav.ol-panel> :last-child { font-size: 14px; font-weight: bolder; padding-left: 10px; - margin-left: -11px; + margin-left: -16px; margin-top: -0px; margin-bottom: -0px; height: 58px; @@ -1060,15 +1073,8 @@ nav.ol-panel> :last-child { #spawn-points-container { height: 100%; - border-right: 1px solid gray; display: flex; align-items: center; - padding-right: 20px; -} - -#command-mode-phase::before { - content: "Time to start"; - font-size: 14px; } #command-mode-phase.setup-phase::after { @@ -1077,7 +1083,6 @@ nav.ol-panel> :last-child { border-radius: 999px; padding: 5px 10px; background-color: var(--background-grey); - margin-left: 15px; content: attr(data-remaining-time); font-size: 14px; } @@ -1091,20 +1096,17 @@ nav.ol-panel> :last-child { display: flex; flex-direction: column; align-items: center; -} - -#command-mode-phase.game-commenced::before { - content: "Game commenced"; - font-weight: bold; + justify-content: center; + height: 100%; } #command-mode-phase.game-commenced::after { - content: "Spawn restrictions are being enforced"; - font-size: 10px; + content: "Spawn restrictions on"; + font-size: 12px; } #command-mode-phase.no-restrictions::after { - content: "No spawn restrictions"; + content: "Spawn restrictions on"; font-size: 10px; } @@ -1312,10 +1314,15 @@ dl.ol-data-grid dd { margin: 4px 0; } + +.ol-dialog label[disabled] { + color: var(--ol-dialog-disabled-text-color) +} + .ol-dialog-content table th { background-color: var(--background-grey); - color:white; - font-size:14px; + color: white; + font-size: 14px; font-weight: normal; } @@ -1336,7 +1343,8 @@ dl.ol-data-grid dd { overflow-y: auto; } -.ol-checkbox label { +.ol-checkbox label, +.ol-text-input label { align-items: center; cursor: pointer; display: flex; @@ -1344,6 +1352,11 @@ dl.ol-data-grid dd { white-space: nowrap; } +.ol-text-input label { + justify-content: space-between; + width: 100%; +} + .ol-checkbox input[type="checkbox"] { appearance: none; background-color: transparent; @@ -1375,14 +1388,21 @@ dl.ol-data-grid dd { .ol-text-input input { background-color: var(--background-grey); border: 1px solid var(--background-grey); - border-radius: 5px; border-radius: var(--border-radius-sm); - box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); + /*box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);*/ color: var(--background-offwhite); height: 32px; text-align: center; } +.ol-text-input.border input { + border: 1px solid var(--background-offwhite); +} + +.ol-text-input input[disabled] { + color: var(--ol-dialog-disabled-text-color); +} + input[type=number] { -moz-appearance: textfield; appearance: textfield; @@ -1422,6 +1442,11 @@ input[type=number]::-webkit-outer-spin-button { border: 1px solid white; } +.ol-button-apply[disabled] { + border-color: var(--ol-dialog-disabled-text-color); + color: var(--ol-dialog-disabled-text-color); +} + .ol-button-apply::before { content: "\2713"; } @@ -1503,49 +1528,49 @@ input[type=number]::-webkit-outer-spin-button { } .switch-control.yes-no .ol-switch[data-value="false"] .ol-switch-fill { - background-color: var(--ol-switch-off); + background-color: var(--ol-switch-off); } .switch-control.yes-no .ol-switch[data-value="undefined"] .ol-switch-fill { - background-color: var(--ol-switch-undefined); + background-color: var(--ol-switch-undefined); } .switch-control.coalition .ol-switch>.ol-switch-fill::before, .switch-control.yes-no .ol-switch>.ol-switch-fill::before { - translate:-100% 0; + translate: -100% 0; transform: none; } .switch-control.yes-no .ol-switch[data-value="true"]>.ol-switch-fill::before { - content: "YES"; + content: "YES"; } .switch-control.yes-no .ol-switch[data-value="false"]>.ol-switch-fill::before { - content: "NO"; + content: "NO"; } .switch-control.coalition [data-value="true"] .ol-switch-fill { - background-color: var(--primary-blue); + background-color: var(--primary-blue); } .switch-control.coalition [data-value="false"] .ol-switch-fill { - background-color: var(--primary-red); + background-color: var(--primary-red); } .switch-control.coalition [data-value="undefined"] .ol-switch-fill { - background-color: var(--primary-neutral); + background-color: var(--primary-neutral); } .switch-control.coalition [data-value="true"] .ol-switch-fill::before { - content: "BLUE"; + content: "BLUE"; } .switch-control.coalition [data-value="false"] .ol-switch-fill::before { - content: "RED"; + content: "RED"; } .switch-control.no-label [data-value] .ol-switch-fill::before { - content:""; + content: ""; } .ol-context-menu>ul { @@ -1606,17 +1631,17 @@ input[type=number]::-webkit-outer-spin-button { } #map-visibility-options .ol-select-options .ol-checkbox { - font-size:13px; - font-weight:400; - padding:6px 15px; + font-size: 13px; + font-weight: 400; + padding: 6px 15px; } #map-visibility-options .ol-select-options .ol-checkbox:first-of-type { - padding-top:12px; + padding-top: 12px; } #map-visibility-options .ol-select-options .ol-checkbox:last-of-type { - padding-bottom:12px; + padding-bottom: 18px; } #map-visibility-options .ol-select-options .ol-checkbox label:hover span { @@ -1636,19 +1661,19 @@ input[type=number]::-webkit-outer-spin-button { } .file-import-export .ol-dialog-content { - display:flex; + display: flex; flex-direction: column; justify-content: center; } .file-import-export p { background-color: var(--background-grey); - border-left:6px solid var(--secondary-blue-text); - padding:12px; + border-left: 6px solid var(--secondary-blue-text); + padding: 12px; } .file-import-export th { - padding:4px 6px; + padding: 4px 6px; } .file-import-export tr td:first-child { @@ -1656,12 +1681,12 @@ input[type=number]::-webkit-outer-spin-button { } .file-import-export td { - color:white; + color: white; text-align: center; } .file-import-export .ol-checkbox { - display:flex; + display: flex; justify-content: center; } @@ -1670,7 +1695,7 @@ input[type=number]::-webkit-outer-spin-button { } .file-import-export .ol-checkbox span { - display:none; + display: none; } .file-import-export button.start-transfer { @@ -1710,7 +1735,7 @@ input[type=number]::-webkit-outer-spin-button { pointer-events: none; } -.file-import-export .ol-dialog-footer button:first-of-type{ +.file-import-export .ol-dialog-footer button:first-of-type { margin-left: auto; } @@ -1720,3 +1745,31 @@ input[type=number]::-webkit-outer-spin-button { } } +#camera-link-type-switch { + width: 60px; + height: 25px; +} + +#camera-link-type-switch[data-value="true"]>.ol-switch-fill::before { + content: "MAP"; +} + +#camera-link-type-switch[data-value="false"]>.ol-switch-fill::before { + content: "LIVE"; +} + +#camera-link-type-switch[data-value="true"]>.ol-switch-fill { + background-color: var(--background-grey); +} + +#camera-link-type-switch[data-value="false"]>.ol-switch-fill { + background-color: var(--background-offwhite); +} + +#camera-link-type-switch[data-value="false"]>.ol-switch-fill::before { + color: var(--background-steel); +} + +#camera-link-type-switch[data-value="false"]>.ol-switch-fill::after { + background-color: var(--background-steel); +} diff --git a/client/public/stylesheets/uikit/uikit.css b/frontend/server/public/stylesheets/uikit/uikit.css similarity index 100% rename from client/public/stylesheets/uikit/uikit.css rename to frontend/server/public/stylesheets/uikit/uikit.css diff --git a/frontend/server/public/themes/olympus/images/buttons/camera/linked.svg b/frontend/server/public/themes/olympus/images/buttons/camera/linked.svg new file mode 100644 index 00000000..86e90e32 --- /dev/null +++ b/frontend/server/public/themes/olympus/images/buttons/camera/linked.svg @@ -0,0 +1,36 @@ + + diff --git a/client/public/themes/olympus/images/buttons/emissions/attack.svg b/frontend/server/public/themes/olympus/images/buttons/emissions/attack.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/emissions/attack.svg rename to frontend/server/public/themes/olympus/images/buttons/emissions/attack.svg diff --git a/client/public/themes/olympus/images/buttons/emissions/defend.svg b/frontend/server/public/themes/olympus/images/buttons/emissions/defend.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/emissions/defend.svg rename to frontend/server/public/themes/olympus/images/buttons/emissions/defend.svg diff --git a/client/public/themes/olympus/images/buttons/emissions/free.svg b/frontend/server/public/themes/olympus/images/buttons/emissions/free.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/emissions/free.svg rename to frontend/server/public/themes/olympus/images/buttons/emissions/free.svg diff --git a/client/public/themes/olympus/images/buttons/emissions/silent.svg b/frontend/server/public/themes/olympus/images/buttons/emissions/silent.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/emissions/silent.svg rename to frontend/server/public/themes/olympus/images/buttons/emissions/silent.svg diff --git a/client/public/themes/olympus/images/buttons/intensity/1.svg b/frontend/server/public/themes/olympus/images/buttons/intensity/1.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/intensity/1.svg rename to frontend/server/public/themes/olympus/images/buttons/intensity/1.svg diff --git a/client/public/themes/olympus/images/buttons/intensity/2.svg b/frontend/server/public/themes/olympus/images/buttons/intensity/2.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/intensity/2.svg rename to frontend/server/public/themes/olympus/images/buttons/intensity/2.svg diff --git a/client/public/themes/olympus/images/buttons/intensity/3.svg b/frontend/server/public/themes/olympus/images/buttons/intensity/3.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/intensity/3.svg rename to frontend/server/public/themes/olympus/images/buttons/intensity/3.svg diff --git a/frontend/server/public/themes/olympus/images/buttons/other/arrow-down-solid.svg b/frontend/server/public/themes/olympus/images/buttons/other/arrow-down-solid.svg new file mode 100644 index 00000000..a31ed4b6 --- /dev/null +++ b/frontend/server/public/themes/olympus/images/buttons/other/arrow-down-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/public/themes/olympus/images/buttons/other/back.svg b/frontend/server/public/themes/olympus/images/buttons/other/back.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/other/back.svg rename to frontend/server/public/themes/olympus/images/buttons/other/back.svg diff --git a/frontend/server/public/themes/olympus/images/buttons/other/clock-rotate-left-solid.svg b/frontend/server/public/themes/olympus/images/buttons/other/clock-rotate-left-solid.svg new file mode 100644 index 00000000..50966792 --- /dev/null +++ b/frontend/server/public/themes/olympus/images/buttons/other/clock-rotate-left-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/public/themes/olympus/images/buttons/other/delete.svg b/frontend/server/public/themes/olympus/images/buttons/other/delete.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/other/delete.svg rename to frontend/server/public/themes/olympus/images/buttons/other/delete.svg diff --git a/client/public/themes/olympus/images/buttons/other/edit.svg b/frontend/server/public/themes/olympus/images/buttons/other/edit.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/other/edit.svg rename to frontend/server/public/themes/olympus/images/buttons/other/edit.svg diff --git a/client/public/themes/olympus/images/buttons/other/lock-open-solid.svg b/frontend/server/public/themes/olympus/images/buttons/other/lock-open-solid.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/other/lock-open-solid.svg rename to frontend/server/public/themes/olympus/images/buttons/other/lock-open-solid.svg diff --git a/client/public/themes/olympus/images/buttons/other/lock-solid.svg b/frontend/server/public/themes/olympus/images/buttons/other/lock-solid.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/other/lock-solid.svg rename to frontend/server/public/themes/olympus/images/buttons/other/lock-solid.svg diff --git a/client/public/themes/olympus/images/buttons/roe/designated.svg b/frontend/server/public/themes/olympus/images/buttons/roe/designated.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/roe/designated.svg rename to frontend/server/public/themes/olympus/images/buttons/roe/designated.svg diff --git a/client/public/themes/olympus/images/buttons/roe/free.svg b/frontend/server/public/themes/olympus/images/buttons/roe/free.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/roe/free.svg rename to frontend/server/public/themes/olympus/images/buttons/roe/free.svg diff --git a/client/public/themes/olympus/images/buttons/roe/hold.svg b/frontend/server/public/themes/olympus/images/buttons/roe/hold.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/roe/hold.svg rename to frontend/server/public/themes/olympus/images/buttons/roe/hold.svg diff --git a/client/public/themes/olympus/images/buttons/roe/return.svg b/frontend/server/public/themes/olympus/images/buttons/roe/return.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/roe/return.svg rename to frontend/server/public/themes/olympus/images/buttons/roe/return.svg diff --git a/client/public/themes/olympus/images/buttons/scatter/1.svg b/frontend/server/public/themes/olympus/images/buttons/scatter/1.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/scatter/1.svg rename to frontend/server/public/themes/olympus/images/buttons/scatter/1.svg diff --git a/client/public/themes/olympus/images/buttons/scatter/2.svg b/frontend/server/public/themes/olympus/images/buttons/scatter/2.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/scatter/2.svg rename to frontend/server/public/themes/olympus/images/buttons/scatter/2.svg diff --git a/client/public/themes/olympus/images/buttons/scatter/3.svg b/frontend/server/public/themes/olympus/images/buttons/scatter/3.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/scatter/3.svg rename to frontend/server/public/themes/olympus/images/buttons/scatter/3.svg diff --git a/client/public/themes/olympus/images/buttons/spawn/aircraft.svg b/frontend/server/public/themes/olympus/images/buttons/spawn/aircraft.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/spawn/aircraft.svg rename to frontend/server/public/themes/olympus/images/buttons/spawn/aircraft.svg diff --git a/client/public/themes/olympus/images/buttons/spawn/explosion.svg b/frontend/server/public/themes/olympus/images/buttons/spawn/explosion.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/spawn/explosion.svg rename to frontend/server/public/themes/olympus/images/buttons/spawn/explosion.svg diff --git a/client/public/themes/olympus/images/buttons/spawn/groundunit.svg b/frontend/server/public/themes/olympus/images/buttons/spawn/groundunit.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/spawn/groundunit.svg rename to frontend/server/public/themes/olympus/images/buttons/spawn/groundunit.svg diff --git a/client/public/themes/olympus/images/buttons/spawn/helicopter.svg b/frontend/server/public/themes/olympus/images/buttons/spawn/helicopter.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/spawn/helicopter.svg rename to frontend/server/public/themes/olympus/images/buttons/spawn/helicopter.svg diff --git a/client/public/themes/olympus/images/buttons/spawn/more.svg b/frontend/server/public/themes/olympus/images/buttons/spawn/more.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/spawn/more.svg rename to frontend/server/public/themes/olympus/images/buttons/spawn/more.svg diff --git a/client/public/themes/olympus/images/buttons/spawn/navyunit.svg b/frontend/server/public/themes/olympus/images/buttons/spawn/navyunit.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/spawn/navyunit.svg rename to frontend/server/public/themes/olympus/images/buttons/spawn/navyunit.svg diff --git a/client/public/themes/olympus/images/buttons/spawn/sam.svg b/frontend/server/public/themes/olympus/images/buttons/spawn/sam.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/spawn/sam.svg rename to frontend/server/public/themes/olympus/images/buttons/spawn/sam.svg diff --git a/client/public/themes/olympus/images/buttons/spawn/smoke.svg b/frontend/server/public/themes/olympus/images/buttons/spawn/smoke.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/spawn/smoke.svg rename to frontend/server/public/themes/olympus/images/buttons/spawn/smoke.svg diff --git a/client/public/themes/olympus/images/buttons/threat/evade.svg b/frontend/server/public/themes/olympus/images/buttons/threat/evade.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/threat/evade.svg rename to frontend/server/public/themes/olympus/images/buttons/threat/evade.svg diff --git a/client/public/themes/olympus/images/buttons/threat/manoeuvre.svg b/frontend/server/public/themes/olympus/images/buttons/threat/manoeuvre.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/threat/manoeuvre.svg rename to frontend/server/public/themes/olympus/images/buttons/threat/manoeuvre.svg diff --git a/client/public/themes/olympus/images/buttons/threat/none.svg b/frontend/server/public/themes/olympus/images/buttons/threat/none.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/threat/none.svg rename to frontend/server/public/themes/olympus/images/buttons/threat/none.svg diff --git a/client/public/themes/olympus/images/buttons/threat/passive.svg b/frontend/server/public/themes/olympus/images/buttons/threat/passive.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/threat/passive.svg rename to frontend/server/public/themes/olympus/images/buttons/threat/passive.svg diff --git a/client/public/themes/olympus/images/buttons/tools/draw-polygon-solid.svg b/frontend/server/public/themes/olympus/images/buttons/tools/draw-polygon-solid.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/tools/draw-polygon-solid.svg rename to frontend/server/public/themes/olympus/images/buttons/tools/draw-polygon-solid.svg diff --git a/client/public/themes/olympus/images/buttons/tools/ground.svg b/frontend/server/public/themes/olympus/images/buttons/tools/ground.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/tools/ground.svg rename to frontend/server/public/themes/olympus/images/buttons/tools/ground.svg diff --git a/client/public/themes/olympus/images/buttons/tools/pen-solid.svg b/frontend/server/public/themes/olympus/images/buttons/tools/pen-solid.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/tools/pen-solid.svg rename to frontend/server/public/themes/olympus/images/buttons/tools/pen-solid.svg diff --git a/client/public/themes/olympus/images/buttons/tools/tower.svg b/frontend/server/public/themes/olympus/images/buttons/tools/tower.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/tools/tower.svg rename to frontend/server/public/themes/olympus/images/buttons/tools/tower.svg diff --git a/client/public/themes/olympus/images/buttons/visibility/airbase.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/airbase.svg similarity index 93% rename from client/public/themes/olympus/images/buttons/visibility/airbase.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/airbase.svg index 28ad42a4..af684050 100644 --- a/client/public/themes/olympus/images/buttons/visibility/airbase.svg +++ b/frontend/server/public/themes/olympus/images/buttons/visibility/airbase.svg @@ -50,27 +50,26 @@ diff --git a/client/public/themes/olympus/images/buttons/visibility/aircraft.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/aircraft.svg similarity index 98% rename from client/public/themes/olympus/images/buttons/visibility/aircraft.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/aircraft.svg index 09a9e322..593e7643 100644 --- a/client/public/themes/olympus/images/buttons/visibility/aircraft.svg +++ b/frontend/server/public/themes/olympus/images/buttons/visibility/aircraft.svg @@ -36,6 +36,6 @@ diff --git a/client/public/themes/olympus/images/buttons/visibility/circle-dot.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/circle-dot.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/visibility/circle-dot.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/circle-dot.svg diff --git a/client/public/themes/olympus/images/buttons/visibility/dcs.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/dcs.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/visibility/dcs.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/dcs.svg diff --git a/client/public/themes/olympus/images/buttons/visibility/flag.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/flag.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/visibility/flag.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/flag.svg diff --git a/client/public/themes/olympus/images/buttons/visibility/groundunit-sam.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/groundunit-sam.svg similarity index 99% rename from client/public/themes/olympus/images/buttons/visibility/groundunit-sam.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/groundunit-sam.svg index 2a568fbb..3198968b 100644 --- a/client/public/themes/olympus/images/buttons/visibility/groundunit-sam.svg +++ b/frontend/server/public/themes/olympus/images/buttons/visibility/groundunit-sam.svg @@ -38,12 +38,12 @@ + style="fill-opacity:1;stroke-width:0.02531246" + fill="black"/> diff --git a/client/public/themes/olympus/images/buttons/visibility/human.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/human.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/visibility/human.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/human.svg diff --git a/client/public/themes/olympus/images/buttons/visibility/navyunit.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/navyunit.svg similarity index 99% rename from client/public/themes/olympus/images/buttons/visibility/navyunit.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/navyunit.svg index d4ff6fec..87f20c12 100644 --- a/client/public/themes/olympus/images/buttons/visibility/navyunit.svg +++ b/frontend/server/public/themes/olympus/images/buttons/visibility/navyunit.svg @@ -36,6 +36,6 @@ diff --git a/frontend/server/public/themes/olympus/images/buttons/visibility/olympus.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/olympus.svg new file mode 100644 index 00000000..c13a36a3 --- /dev/null +++ b/frontend/server/public/themes/olympus/images/buttons/visibility/olympus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/public/themes/olympus/images/buttons/visibility/shield.svg b/frontend/server/public/themes/olympus/images/buttons/visibility/shield.svg similarity index 100% rename from client/public/themes/olympus/images/buttons/visibility/shield.svg rename to frontend/server/public/themes/olympus/images/buttons/visibility/shield.svg diff --git a/client/public/themes/olympus/images/icons/altitude.svg b/frontend/server/public/themes/olympus/images/icons/altitude.svg similarity index 100% rename from client/public/themes/olympus/images/icons/altitude.svg rename to frontend/server/public/themes/olympus/images/icons/altitude.svg diff --git a/client/public/themes/olympus/images/icons/arrow-pointer-solid.svg b/frontend/server/public/themes/olympus/images/icons/arrow-pointer-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/arrow-pointer-solid.svg rename to frontend/server/public/themes/olympus/images/icons/arrow-pointer-solid.svg diff --git a/client/public/themes/olympus/images/icons/arrows-to-eye-solid.svg b/frontend/server/public/themes/olympus/images/icons/arrows-to-eye-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/arrows-to-eye-solid.svg rename to frontend/server/public/themes/olympus/images/icons/arrows-to-eye-solid.svg diff --git a/client/public/themes/olympus/images/icons/bomb-solid.svg b/frontend/server/public/themes/olympus/images/icons/bomb-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/bomb-solid.svg rename to frontend/server/public/themes/olympus/images/icons/bomb-solid.svg diff --git a/client/public/themes/olympus/images/icons/burst-solid.svg b/frontend/server/public/themes/olympus/images/icons/burst-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/burst-solid.svg rename to frontend/server/public/themes/olympus/images/icons/burst-solid.svg diff --git a/frontend/server/public/themes/olympus/images/icons/camera.svg b/frontend/server/public/themes/olympus/images/icons/camera.svg new file mode 100644 index 00000000..71f65572 --- /dev/null +++ b/frontend/server/public/themes/olympus/images/icons/camera.svg @@ -0,0 +1,34 @@ + + diff --git a/client/public/themes/olympus/images/icons/check_square.svg b/frontend/server/public/themes/olympus/images/icons/check_square.svg similarity index 100% rename from client/public/themes/olympus/images/icons/check_square.svg rename to frontend/server/public/themes/olympus/images/icons/check_square.svg diff --git a/client/public/themes/olympus/images/icons/chevron-down-warning.svg b/frontend/server/public/themes/olympus/images/icons/chevron-down-warning.svg similarity index 100% rename from client/public/themes/olympus/images/icons/chevron-down-warning.svg rename to frontend/server/public/themes/olympus/images/icons/chevron-down-warning.svg diff --git a/client/public/themes/olympus/images/icons/chevron-down.svg b/frontend/server/public/themes/olympus/images/icons/chevron-down.svg similarity index 100% rename from client/public/themes/olympus/images/icons/chevron-down.svg rename to frontend/server/public/themes/olympus/images/icons/chevron-down.svg diff --git a/client/public/themes/olympus/images/icons/circle-info-solid.svg b/frontend/server/public/themes/olympus/images/icons/circle-info-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/circle-info-solid.svg rename to frontend/server/public/themes/olympus/images/icons/circle-info-solid.svg diff --git a/client/public/themes/olympus/images/icons/circle-question-regular.svg b/frontend/server/public/themes/olympus/images/icons/circle-question-regular.svg similarity index 100% rename from client/public/themes/olympus/images/icons/circle-question-regular.svg rename to frontend/server/public/themes/olympus/images/icons/circle-question-regular.svg diff --git a/client/public/themes/olympus/images/icons/climb.svg b/frontend/server/public/themes/olympus/images/icons/climb.svg similarity index 100% rename from client/public/themes/olympus/images/icons/climb.svg rename to frontend/server/public/themes/olympus/images/icons/climb.svg diff --git a/client/public/themes/olympus/images/icons/crosshairs-solid.svg b/frontend/server/public/themes/olympus/images/icons/crosshairs-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/crosshairs-solid.svg rename to frontend/server/public/themes/olympus/images/icons/crosshairs-solid.svg diff --git a/client/public/themes/olympus/images/icons/descent.svg b/frontend/server/public/themes/olympus/images/icons/descent.svg similarity index 100% rename from client/public/themes/olympus/images/icons/descent.svg rename to frontend/server/public/themes/olympus/images/icons/descent.svg diff --git a/client/public/themes/olympus/images/icons/diamond.svg b/frontend/server/public/themes/olympus/images/icons/diamond.svg similarity index 100% rename from client/public/themes/olympus/images/icons/diamond.svg rename to frontend/server/public/themes/olympus/images/icons/diamond.svg diff --git a/client/public/themes/olympus/images/icons/echelon-lh.svg b/frontend/server/public/themes/olympus/images/icons/echelon-lh.svg similarity index 100% rename from client/public/themes/olympus/images/icons/echelon-lh.svg rename to frontend/server/public/themes/olympus/images/icons/echelon-lh.svg diff --git a/client/public/themes/olympus/images/icons/echelon-rh.svg b/frontend/server/public/themes/olympus/images/icons/echelon-rh.svg similarity index 100% rename from client/public/themes/olympus/images/icons/echelon-rh.svg rename to frontend/server/public/themes/olympus/images/icons/echelon-rh.svg diff --git a/client/public/themes/olympus/images/icons/echelon.svg b/frontend/server/public/themes/olympus/images/icons/echelon.svg similarity index 100% rename from client/public/themes/olympus/images/icons/echelon.svg rename to frontend/server/public/themes/olympus/images/icons/echelon.svg diff --git a/client/public/themes/olympus/images/icons/explosion-solid.svg b/frontend/server/public/themes/olympus/images/icons/explosion-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/explosion-solid.svg rename to frontend/server/public/themes/olympus/images/icons/explosion-solid.svg diff --git a/client/public/themes/olympus/images/icons/eye-solid.svg b/frontend/server/public/themes/olympus/images/icons/eye-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/eye-solid.svg rename to frontend/server/public/themes/olympus/images/icons/eye-solid.svg diff --git a/client/public/themes/olympus/images/icons/fire-solid.svg b/frontend/server/public/themes/olympus/images/icons/fire-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/fire-solid.svg rename to frontend/server/public/themes/olympus/images/icons/fire-solid.svg diff --git a/client/public/themes/olympus/images/icons/follow.svg b/frontend/server/public/themes/olympus/images/icons/follow.svg similarity index 100% rename from client/public/themes/olympus/images/icons/follow.svg rename to frontend/server/public/themes/olympus/images/icons/follow.svg diff --git a/client/public/themes/olympus/images/icons/formation-end.svg b/frontend/server/public/themes/olympus/images/icons/formation-end.svg similarity index 100% rename from client/public/themes/olympus/images/icons/formation-end.svg rename to frontend/server/public/themes/olympus/images/icons/formation-end.svg diff --git a/client/public/themes/olympus/images/icons/formation-middle.svg b/frontend/server/public/themes/olympus/images/icons/formation-middle.svg similarity index 100% rename from client/public/themes/olympus/images/icons/formation-middle.svg rename to frontend/server/public/themes/olympus/images/icons/formation-middle.svg diff --git a/client/public/themes/olympus/images/icons/front.svg b/frontend/server/public/themes/olympus/images/icons/front.svg similarity index 100% rename from client/public/themes/olympus/images/icons/front.svg rename to frontend/server/public/themes/olympus/images/icons/front.svg diff --git a/client/public/themes/olympus/images/icons/fuel.svg b/frontend/server/public/themes/olympus/images/icons/fuel.svg similarity index 100% rename from client/public/themes/olympus/images/icons/fuel.svg rename to frontend/server/public/themes/olympus/images/icons/fuel.svg diff --git a/client/public/themes/olympus/images/icons/gamepad-solid.svg b/frontend/server/public/themes/olympus/images/icons/gamepad-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/gamepad-solid.svg rename to frontend/server/public/themes/olympus/images/icons/gamepad-solid.svg diff --git a/client/public/themes/olympus/images/icons/gears-solid.svg b/frontend/server/public/themes/olympus/images/icons/gears-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/gears-solid.svg rename to frontend/server/public/themes/olympus/images/icons/gears-solid.svg diff --git a/client/public/themes/olympus/images/icons/grip-lines-solid.svg b/frontend/server/public/themes/olympus/images/icons/grip-lines-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/grip-lines-solid.svg rename to frontend/server/public/themes/olympus/images/icons/grip-lines-solid.svg diff --git a/client/public/themes/olympus/images/icons/group-ground.svg b/frontend/server/public/themes/olympus/images/icons/group-ground.svg similarity index 100% rename from client/public/themes/olympus/images/icons/group-ground.svg rename to frontend/server/public/themes/olympus/images/icons/group-ground.svg diff --git a/client/public/themes/olympus/images/icons/group-navy.svg b/frontend/server/public/themes/olympus/images/icons/group-navy.svg similarity index 100% rename from client/public/themes/olympus/images/icons/group-navy.svg rename to frontend/server/public/themes/olympus/images/icons/group-navy.svg diff --git a/client/public/themes/olympus/images/icons/hand-solid.svg b/frontend/server/public/themes/olympus/images/icons/hand-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/hand-solid.svg rename to frontend/server/public/themes/olympus/images/icons/hand-solid.svg diff --git a/client/public/themes/olympus/images/icons/heading.svg b/frontend/server/public/themes/olympus/images/icons/heading.svg similarity index 100% rename from client/public/themes/olympus/images/icons/heading.svg rename to frontend/server/public/themes/olympus/images/icons/heading.svg diff --git a/client/public/themes/olympus/images/icons/health.svg b/frontend/server/public/themes/olympus/images/icons/health.svg similarity index 100% rename from client/public/themes/olympus/images/icons/health.svg rename to frontend/server/public/themes/olympus/images/icons/health.svg diff --git a/client/public/themes/olympus/images/icons/jet-fighter-up-solid.svg b/frontend/server/public/themes/olympus/images/icons/jet-fighter-up-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/jet-fighter-up-solid.svg rename to frontend/server/public/themes/olympus/images/icons/jet-fighter-up-solid.svg diff --git a/client/public/themes/olympus/images/icons/keyboard-solid.svg b/frontend/server/public/themes/olympus/images/icons/keyboard-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/keyboard-solid.svg rename to frontend/server/public/themes/olympus/images/icons/keyboard-solid.svg diff --git a/client/public/themes/olympus/images/icons/land-at-point.svg b/frontend/server/public/themes/olympus/images/icons/land-at-point.svg similarity index 100% rename from client/public/themes/olympus/images/icons/land-at-point.svg rename to frontend/server/public/themes/olympus/images/icons/land-at-point.svg diff --git a/client/public/themes/olympus/images/icons/line-abreast.svg b/frontend/server/public/themes/olympus/images/icons/line-abreast.svg similarity index 100% rename from client/public/themes/olympus/images/icons/line-abreast.svg rename to frontend/server/public/themes/olympus/images/icons/line-abreast.svg diff --git a/client/public/themes/olympus/images/icons/map-source.svg b/frontend/server/public/themes/olympus/images/icons/map-source.svg similarity index 100% rename from client/public/themes/olympus/images/icons/map-source.svg rename to frontend/server/public/themes/olympus/images/icons/map-source.svg diff --git a/client/public/themes/olympus/images/icons/miss-blue.svg b/frontend/server/public/themes/olympus/images/icons/miss-blue.svg similarity index 100% rename from client/public/themes/olympus/images/icons/miss-blue.svg rename to frontend/server/public/themes/olympus/images/icons/miss-blue.svg diff --git a/client/public/themes/olympus/images/icons/miss-red.svg b/frontend/server/public/themes/olympus/images/icons/miss-red.svg similarity index 100% rename from client/public/themes/olympus/images/icons/miss-red.svg rename to frontend/server/public/themes/olympus/images/icons/miss-red.svg diff --git a/client/public/themes/olympus/images/icons/miss.svg b/frontend/server/public/themes/olympus/images/icons/miss.svg similarity index 100% rename from client/public/themes/olympus/images/icons/miss.svg rename to frontend/server/public/themes/olympus/images/icons/miss.svg diff --git a/client/public/themes/olympus/images/icons/napalm.svg b/frontend/server/public/themes/olympus/images/icons/napalm.svg similarity index 100% rename from client/public/themes/olympus/images/icons/napalm.svg rename to frontend/server/public/themes/olympus/images/icons/napalm.svg diff --git a/client/public/themes/olympus/images/icons/person-military-pointing-solid.svg b/frontend/server/public/themes/olympus/images/icons/person-military-pointing-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/person-military-pointing-solid.svg rename to frontend/server/public/themes/olympus/images/icons/person-military-pointing-solid.svg diff --git a/client/public/themes/olympus/images/icons/pin.svg b/frontend/server/public/themes/olympus/images/icons/pin.svg similarity index 100% rename from client/public/themes/olympus/images/icons/pin.svg rename to frontend/server/public/themes/olympus/images/icons/pin.svg diff --git a/client/public/themes/olympus/images/icons/plane.svg b/frontend/server/public/themes/olympus/images/icons/plane.svg similarity index 100% rename from client/public/themes/olympus/images/icons/plane.svg rename to frontend/server/public/themes/olympus/images/icons/plane.svg diff --git a/client/public/themes/olympus/images/icons/ruler.svg b/frontend/server/public/themes/olympus/images/icons/ruler.svg similarity index 100% rename from client/public/themes/olympus/images/icons/ruler.svg rename to frontend/server/public/themes/olympus/images/icons/ruler.svg diff --git a/client/public/themes/olympus/images/icons/scenic-blue.svg b/frontend/server/public/themes/olympus/images/icons/scenic-blue.svg similarity index 100% rename from client/public/themes/olympus/images/icons/scenic-blue.svg rename to frontend/server/public/themes/olympus/images/icons/scenic-blue.svg diff --git a/client/public/themes/olympus/images/icons/scenic-red.svg b/frontend/server/public/themes/olympus/images/icons/scenic-red.svg similarity index 100% rename from client/public/themes/olympus/images/icons/scenic-red.svg rename to frontend/server/public/themes/olympus/images/icons/scenic-red.svg diff --git a/client/public/themes/olympus/images/icons/scenic.svg b/frontend/server/public/themes/olympus/images/icons/scenic.svg similarity index 100% rename from client/public/themes/olympus/images/icons/scenic.svg rename to frontend/server/public/themes/olympus/images/icons/scenic.svg diff --git a/client/public/themes/olympus/images/icons/secondaries.svg b/frontend/server/public/themes/olympus/images/icons/secondaries.svg similarity index 100% rename from client/public/themes/olympus/images/icons/secondaries.svg rename to frontend/server/public/themes/olympus/images/icons/secondaries.svg diff --git a/client/public/themes/olympus/images/icons/smog-solid.svg b/frontend/server/public/themes/olympus/images/icons/smog-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/smog-solid.svg rename to frontend/server/public/themes/olympus/images/icons/smog-solid.svg diff --git a/client/public/themes/olympus/images/icons/speed-decrease.svg b/frontend/server/public/themes/olympus/images/icons/speed-decrease.svg similarity index 100% rename from client/public/themes/olympus/images/icons/speed-decrease.svg rename to frontend/server/public/themes/olympus/images/icons/speed-decrease.svg diff --git a/client/public/themes/olympus/images/icons/speed-increase.svg b/frontend/server/public/themes/olympus/images/icons/speed-increase.svg similarity index 100% rename from client/public/themes/olympus/images/icons/speed-increase.svg rename to frontend/server/public/themes/olympus/images/icons/speed-increase.svg diff --git a/client/public/themes/olympus/images/icons/speed.svg b/frontend/server/public/themes/olympus/images/icons/speed.svg similarity index 100% rename from client/public/themes/olympus/images/icons/speed.svg rename to frontend/server/public/themes/olympus/images/icons/speed.svg diff --git a/client/public/themes/olympus/images/icons/square-check-solid.svg b/frontend/server/public/themes/olympus/images/icons/square-check-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/square-check-solid.svg rename to frontend/server/public/themes/olympus/images/icons/square-check-solid.svg diff --git a/client/public/themes/olympus/images/icons/square-regular.svg b/frontend/server/public/themes/olympus/images/icons/square-regular.svg similarity index 100% rename from client/public/themes/olympus/images/icons/square-regular.svg rename to frontend/server/public/themes/olympus/images/icons/square-regular.svg diff --git a/client/public/themes/olympus/images/icons/sword.svg b/frontend/server/public/themes/olympus/images/icons/sword.svg similarity index 100% rename from client/public/themes/olympus/images/icons/sword.svg rename to frontend/server/public/themes/olympus/images/icons/sword.svg diff --git a/client/public/themes/olympus/images/icons/trail.svg b/frontend/server/public/themes/olympus/images/icons/trail.svg similarity index 100% rename from client/public/themes/olympus/images/icons/trail.svg rename to frontend/server/public/themes/olympus/images/icons/trail.svg diff --git a/client/public/themes/olympus/images/icons/trash-can-regular.svg b/frontend/server/public/themes/olympus/images/icons/trash-can-regular.svg similarity index 100% rename from client/public/themes/olympus/images/icons/trash-can-regular.svg rename to frontend/server/public/themes/olympus/images/icons/trash-can-regular.svg diff --git a/client/public/themes/olympus/images/icons/triangle-exclamation-solid.svg b/frontend/server/public/themes/olympus/images/icons/triangle-exclamation-solid.svg similarity index 100% rename from client/public/themes/olympus/images/icons/triangle-exclamation-solid.svg rename to frontend/server/public/themes/olympus/images/icons/triangle-exclamation-solid.svg diff --git a/client/public/themes/olympus/images/icons/white-phosphorous.svg b/frontend/server/public/themes/olympus/images/icons/white-phosphorous.svg similarity index 100% rename from client/public/themes/olympus/images/icons/white-phosphorous.svg rename to frontend/server/public/themes/olympus/images/icons/white-phosphorous.svg diff --git a/client/public/themes/olympus/images/markers/airbase.svg b/frontend/server/public/themes/olympus/images/markers/airbase.svg similarity index 100% rename from client/public/themes/olympus/images/markers/airbase.svg rename to frontend/server/public/themes/olympus/images/markers/airbase.svg diff --git a/client/public/themes/olympus/images/markers/bullseye.svg b/frontend/server/public/themes/olympus/images/markers/bullseye.svg similarity index 100% rename from client/public/themes/olympus/images/markers/bullseye.svg rename to frontend/server/public/themes/olympus/images/markers/bullseye.svg diff --git a/client/public/themes/olympus/images/markers/draw.svg b/frontend/server/public/themes/olympus/images/markers/draw.svg similarity index 100% rename from client/public/themes/olympus/images/markers/draw.svg rename to frontend/server/public/themes/olympus/images/markers/draw.svg diff --git a/client/public/themes/olympus/images/markers/marker-icon.png b/frontend/server/public/themes/olympus/images/markers/marker-icon.png similarity index 100% rename from client/public/themes/olympus/images/markers/marker-icon.png rename to frontend/server/public/themes/olympus/images/markers/marker-icon.png diff --git a/client/public/themes/olympus/images/markers/marker-shadow.png b/frontend/server/public/themes/olympus/images/markers/marker-shadow.png similarity index 100% rename from client/public/themes/olympus/images/markers/marker-shadow.png rename to frontend/server/public/themes/olympus/images/markers/marker-shadow.png diff --git a/client/public/themes/olympus/images/markers/move.svg b/frontend/server/public/themes/olympus/images/markers/move.svg similarity index 100% rename from client/public/themes/olympus/images/markers/move.svg rename to frontend/server/public/themes/olympus/images/markers/move.svg diff --git a/client/public/themes/olympus/images/markers/smoke.svg b/frontend/server/public/themes/olympus/images/markers/smoke.svg similarity index 100% rename from client/public/themes/olympus/images/markers/smoke.svg rename to frontend/server/public/themes/olympus/images/markers/smoke.svg diff --git a/client/public/themes/olympus/images/markers/target - Copy.svg b/frontend/server/public/themes/olympus/images/markers/target - Copy.svg similarity index 100% rename from client/public/themes/olympus/images/markers/target - Copy.svg rename to frontend/server/public/themes/olympus/images/markers/target - Copy.svg diff --git a/client/public/themes/olympus/images/markers/target.svg b/frontend/server/public/themes/olympus/images/markers/target.svg similarity index 100% rename from client/public/themes/olympus/images/markers/target.svg rename to frontend/server/public/themes/olympus/images/markers/target.svg diff --git a/client/public/themes/olympus/images/parrot/parrot.png b/frontend/server/public/themes/olympus/images/parrot/parrot.png similarity index 100% rename from client/public/themes/olympus/images/parrot/parrot.png rename to frontend/server/public/themes/olympus/images/parrot/parrot.png diff --git a/client/public/themes/olympus/images/splash/1.jpg b/frontend/server/public/themes/olympus/images/splash/1.jpg similarity index 100% rename from client/public/themes/olympus/images/splash/1.jpg rename to frontend/server/public/themes/olympus/images/splash/1.jpg diff --git a/client/public/themes/olympus/images/splash/1.png b/frontend/server/public/themes/olympus/images/splash/1.png similarity index 100% rename from client/public/themes/olympus/images/splash/1.png rename to frontend/server/public/themes/olympus/images/splash/1.png diff --git a/client/public/themes/olympus/images/splash/2.jpg b/frontend/server/public/themes/olympus/images/splash/2.jpg similarity index 100% rename from client/public/themes/olympus/images/splash/2.jpg rename to frontend/server/public/themes/olympus/images/splash/2.jpg diff --git a/client/public/themes/olympus/images/splash/3.jpg b/frontend/server/public/themes/olympus/images/splash/3.jpg similarity index 100% rename from client/public/themes/olympus/images/splash/3.jpg rename to frontend/server/public/themes/olympus/images/splash/3.jpg diff --git a/client/public/themes/olympus/images/splash/4.jpg b/frontend/server/public/themes/olympus/images/splash/4.jpg similarity index 100% rename from client/public/themes/olympus/images/splash/4.jpg rename to frontend/server/public/themes/olympus/images/splash/4.jpg diff --git a/client/public/themes/olympus/images/splash/5.jpg b/frontend/server/public/themes/olympus/images/splash/5.jpg similarity index 100% rename from client/public/themes/olympus/images/splash/5.jpg rename to frontend/server/public/themes/olympus/images/splash/5.jpg diff --git a/client/public/themes/olympus/images/splash/6.jpg b/frontend/server/public/themes/olympus/images/splash/6.jpg similarity index 100% rename from client/public/themes/olympus/images/splash/6.jpg rename to frontend/server/public/themes/olympus/images/splash/6.jpg diff --git a/client/public/themes/olympus/images/splash/7.jpg b/frontend/server/public/themes/olympus/images/splash/7.jpg similarity index 100% rename from client/public/themes/olympus/images/splash/7.jpg rename to frontend/server/public/themes/olympus/images/splash/7.jpg diff --git a/client/public/themes/olympus/images/splash/8.jpg b/frontend/server/public/themes/olympus/images/splash/8.jpg similarity index 100% rename from client/public/themes/olympus/images/splash/8.jpg rename to frontend/server/public/themes/olympus/images/splash/8.jpg diff --git a/client/public/themes/olympus/images/states/attack.svg b/frontend/server/public/themes/olympus/images/states/attack.svg similarity index 100% rename from client/public/themes/olympus/images/states/attack.svg rename to frontend/server/public/themes/olympus/images/states/attack.svg diff --git a/client/public/themes/olympus/images/states/awacs.svg b/frontend/server/public/themes/olympus/images/states/awacs.svg similarity index 100% rename from client/public/themes/olympus/images/states/awacs.svg rename to frontend/server/public/themes/olympus/images/states/awacs.svg diff --git a/client/public/themes/olympus/images/states/dcs.svg b/frontend/server/public/themes/olympus/images/states/dcs.svg similarity index 100% rename from client/public/themes/olympus/images/states/dcs.svg rename to frontend/server/public/themes/olympus/images/states/dcs.svg diff --git a/client/public/themes/olympus/images/states/follow.svg b/frontend/server/public/themes/olympus/images/states/follow.svg similarity index 100% rename from client/public/themes/olympus/images/states/follow.svg rename to frontend/server/public/themes/olympus/images/states/follow.svg diff --git a/client/public/themes/olympus/images/states/human.svg b/frontend/server/public/themes/olympus/images/states/human.svg similarity index 100% rename from client/public/themes/olympus/images/states/human.svg rename to frontend/server/public/themes/olympus/images/states/human.svg diff --git a/client/public/themes/olympus/images/states/idle.svg b/frontend/server/public/themes/olympus/images/states/idle.svg similarity index 100% rename from client/public/themes/olympus/images/states/idle.svg rename to frontend/server/public/themes/olympus/images/states/idle.svg diff --git a/client/public/themes/olympus/images/states/land-at-point.svg b/frontend/server/public/themes/olympus/images/states/land-at-point.svg similarity index 100% rename from client/public/themes/olympus/images/states/land-at-point.svg rename to frontend/server/public/themes/olympus/images/states/land-at-point.svg diff --git a/client/public/themes/olympus/images/states/miss-on-purpose.svg b/frontend/server/public/themes/olympus/images/states/miss-on-purpose.svg similarity index 100% rename from client/public/themes/olympus/images/states/miss-on-purpose.svg rename to frontend/server/public/themes/olympus/images/states/miss-on-purpose.svg diff --git a/client/public/themes/olympus/images/states/no-task.svg b/frontend/server/public/themes/olympus/images/states/no-task.svg similarity index 100% rename from client/public/themes/olympus/images/states/no-task.svg rename to frontend/server/public/themes/olympus/images/states/no-task.svg diff --git a/client/public/themes/olympus/images/states/off.svg b/frontend/server/public/themes/olympus/images/states/off.svg similarity index 100% rename from client/public/themes/olympus/images/states/off.svg rename to frontend/server/public/themes/olympus/images/states/off.svg diff --git a/client/public/themes/olympus/images/states/refuel.svg b/frontend/server/public/themes/olympus/images/states/refuel.svg similarity index 100% rename from client/public/themes/olympus/images/states/refuel.svg rename to frontend/server/public/themes/olympus/images/states/refuel.svg diff --git a/client/public/themes/olympus/images/states/rtb.svg b/frontend/server/public/themes/olympus/images/states/rtb.svg similarity index 100% rename from client/public/themes/olympus/images/states/rtb.svg rename to frontend/server/public/themes/olympus/images/states/rtb.svg diff --git a/client/public/themes/olympus/images/states/scenic-aaa.svg b/frontend/server/public/themes/olympus/images/states/scenic-aaa.svg similarity index 100% rename from client/public/themes/olympus/images/states/scenic-aaa.svg rename to frontend/server/public/themes/olympus/images/states/scenic-aaa.svg diff --git a/client/public/themes/olympus/images/states/simulate-fire-fight.svg b/frontend/server/public/themes/olympus/images/states/simulate-fire-fight.svg similarity index 100% rename from client/public/themes/olympus/images/states/simulate-fire-fight.svg rename to frontend/server/public/themes/olympus/images/states/simulate-fire-fight.svg diff --git a/client/public/themes/olympus/images/states/tanker.svg b/frontend/server/public/themes/olympus/images/states/tanker.svg similarity index 100% rename from client/public/themes/olympus/images/states/tanker.svg rename to frontend/server/public/themes/olympus/images/states/tanker.svg diff --git a/client/public/themes/olympus/images/units/aircraft.svg b/frontend/server/public/themes/olympus/images/units/aircraft.svg similarity index 100% rename from client/public/themes/olympus/images/units/aircraft.svg rename to frontend/server/public/themes/olympus/images/units/aircraft.svg diff --git a/client/public/themes/olympus/images/units/bomb.svg b/frontend/server/public/themes/olympus/images/units/bomb.svg similarity index 100% rename from client/public/themes/olympus/images/units/bomb.svg rename to frontend/server/public/themes/olympus/images/units/bomb.svg diff --git a/client/public/themes/olympus/images/units/death.svg b/frontend/server/public/themes/olympus/images/units/death.svg similarity index 100% rename from client/public/themes/olympus/images/units/death.svg rename to frontend/server/public/themes/olympus/images/units/death.svg diff --git a/client/public/themes/olympus/images/units/groundunit-aaa.svg b/frontend/server/public/themes/olympus/images/units/groundunit-aaa.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-aaa.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-aaa.svg diff --git a/client/public/themes/olympus/images/units/groundunit-apc.svg b/frontend/server/public/themes/olympus/images/units/groundunit-apc.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-apc.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-apc.svg diff --git a/client/public/themes/olympus/images/units/groundunit-artillery.svg b/frontend/server/public/themes/olympus/images/units/groundunit-artillery.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-artillery.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-artillery.svg diff --git a/client/public/themes/olympus/images/units/groundunit-ewr.svg b/frontend/server/public/themes/olympus/images/units/groundunit-ewr.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-ewr.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-ewr.svg diff --git a/client/public/themes/olympus/images/units/groundunit-infantry.svg b/frontend/server/public/themes/olympus/images/units/groundunit-infantry.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-infantry.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-infantry.svg diff --git a/client/public/themes/olympus/images/units/groundunit-sam-launcher.svg b/frontend/server/public/themes/olympus/images/units/groundunit-sam-launcher.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-sam-launcher.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-sam-launcher.svg diff --git a/client/public/themes/olympus/images/units/groundunit-sam-radar.svg b/frontend/server/public/themes/olympus/images/units/groundunit-sam-radar.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-sam-radar.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-sam-radar.svg diff --git a/client/public/themes/olympus/images/units/groundunit-sam.svg b/frontend/server/public/themes/olympus/images/units/groundunit-sam.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-sam.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-sam.svg diff --git a/client/public/themes/olympus/images/units/groundunit-tactical.svg b/frontend/server/public/themes/olympus/images/units/groundunit-tactical.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-tactical.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-tactical.svg diff --git a/client/public/themes/olympus/images/units/groundunit-tank.svg b/frontend/server/public/themes/olympus/images/units/groundunit-tank.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-tank.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-tank.svg diff --git a/client/public/themes/olympus/images/units/groundunit-truck.svg b/frontend/server/public/themes/olympus/images/units/groundunit-truck.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit-truck.svg rename to frontend/server/public/themes/olympus/images/units/groundunit-truck.svg diff --git a/client/public/themes/olympus/images/units/groundunit.svg b/frontend/server/public/themes/olympus/images/units/groundunit.svg similarity index 100% rename from client/public/themes/olympus/images/units/groundunit.svg rename to frontend/server/public/themes/olympus/images/units/groundunit.svg diff --git a/client/public/themes/olympus/images/units/helicopter.svg b/frontend/server/public/themes/olympus/images/units/helicopter.svg similarity index 100% rename from client/public/themes/olympus/images/units/helicopter.svg rename to frontend/server/public/themes/olympus/images/units/helicopter.svg diff --git a/client/public/themes/olympus/images/units/missile.svg b/frontend/server/public/themes/olympus/images/units/missile.svg similarity index 100% rename from client/public/themes/olympus/images/units/missile.svg rename to frontend/server/public/themes/olympus/images/units/missile.svg diff --git a/client/public/themes/olympus/images/units/navyunit.svg b/frontend/server/public/themes/olympus/images/units/navyunit.svg similarity index 100% rename from client/public/themes/olympus/images/units/navyunit.svg rename to frontend/server/public/themes/olympus/images/units/navyunit.svg diff --git a/client/public/themes/olympus/images/units/static.svg b/frontend/server/public/themes/olympus/images/units/static.svg similarity index 100% rename from client/public/themes/olympus/images/units/static.svg rename to frontend/server/public/themes/olympus/images/units/static.svg diff --git a/client/public/themes/olympus/theme.css b/frontend/server/public/themes/olympus/theme.css similarity index 96% rename from client/public/themes/olympus/theme.css rename to frontend/server/public/themes/olympus/theme.css index 2da7dde9..f888f8dd 100644 --- a/client/public/themes/olympus/theme.css +++ b/frontend/server/public/themes/olympus/theme.css @@ -28,6 +28,7 @@ --accent-light-red: #F5B6B6; --background-grey: #3d4651; + --background-dark-grey: #35393d; --background-slate-blue: #363c43; --background-offwhite: #f2f2f3; --background-steel: #202831; @@ -48,6 +49,8 @@ --ol-switch-off:#686868; --ol-switch-undefined:#383838; + --ol-dialog-disabled-text-color: #ffffff20; + /*** General border radii **/ --border-radius-xs: 2px; --border-radius-sm: 5px; diff --git a/client/public/themes/parrot/images/parrot.svg b/frontend/server/public/themes/parrot/images/parrot.svg similarity index 100% rename from client/public/themes/parrot/images/parrot.svg rename to frontend/server/public/themes/parrot/images/parrot.svg diff --git a/client/public/themes/parrot/theme.css b/frontend/server/public/themes/parrot/theme.css similarity index 100% rename from client/public/themes/parrot/theme.css rename to frontend/server/public/themes/parrot/theme.css diff --git a/client/routes/api/airbases.js b/frontend/server/routes/api/airbases.js similarity index 98% rename from client/routes/api/airbases.js rename to frontend/server/routes/api/airbases.js index 480bf5d6..f5144f67 100644 --- a/client/routes/api/airbases.js +++ b/frontend/server/routes/api/airbases.js @@ -16,7 +16,8 @@ const allowedTheatres = [ "persiangulf", "sinaimap", "syria", - "thechannel" + "thechannel", + "kola" ]; function getAirbasesData( theatreName ) { diff --git a/client/routes/api/atc.js b/frontend/server/routes/api/atc.js similarity index 100% rename from client/routes/api/atc.js rename to frontend/server/routes/api/atc.js diff --git a/client/routes/api/databases.js b/frontend/server/routes/api/databases.js similarity index 93% rename from client/routes/api/databases.js rename to frontend/server/routes/api/databases.js index eea9667e..ed77e3f4 100644 --- a/client/routes/api/databases.js +++ b/frontend/server/routes/api/databases.js @@ -5,7 +5,8 @@ module.exports = function (databasesLocation) { const path = require("path"); router.get('/:type/:name', function (req, res) { - console.log(req.params.database) + var contents = fs.readFileSync(path.join(databasesLocation, req.params.type, req.params.name + ".json")); + res.status(200).send(contents); }); router.put('/save/:type/:name', function (req, res) { diff --git a/frontend/server/routes/api/elevation.js b/frontend/server/routes/api/elevation.js new file mode 100644 index 00000000..f2450065 --- /dev/null +++ b/frontend/server/routes/api/elevation.js @@ -0,0 +1,30 @@ +module.exports = function (configLocation) { + const express = require('express'); + var fs = require('fs'); + const router = express.Router(); + const TileSet = require('srtm-elevation').TileSet; + const SRTMElevationDownloader = require('srtm-elevation').SRTMElevationDownloader; + + let rawdata = fs.readFileSync(configLocation); + let config = JSON.parse(rawdata); + var tileset = null; + + if (config["frontend"] === undefined || config["frontend"]["elevationProvider"] === undefined) + tileset = new TileSet('./hgt'); + else + tileset = new TileSet('./hgt', {downloader: new SRTMElevationDownloader('./hgt', config["frontend"]["elevationProvider"])}); + + router.get( "/:lat/:lng", ( req, res ) => { + tileset.getElevation([req.params.lat, req.params.lng], function(err, elevation) { + if (err) { + console.log('getElevation failed: ' + err.message); + res.send("n/a"); + } else { + res.send(String(elevation)); + } + }); + + }); + + return router; +} \ No newline at end of file diff --git a/client/routes/index.js b/frontend/server/routes/index.js similarity index 100% rename from client/routes/index.js rename to frontend/server/routes/index.js diff --git a/client/routes/plugins.js b/frontend/server/routes/plugins.js similarity index 100% rename from client/routes/plugins.js rename to frontend/server/routes/plugins.js diff --git a/frontend/server/routes/resources.js b/frontend/server/routes/resources.js new file mode 100644 index 00000000..3e326008 --- /dev/null +++ b/frontend/server/routes/resources.js @@ -0,0 +1,32 @@ +const express = require('express'); +const fs = require('fs'); +const router = express.Router(); + +module.exports = function (configLocation) { + router.get('/theme/*', function (req, res, next) { + var reqTheme = "olympus"; + + /* Yes, this in an easter egg! :D Feel free to ignore it, or activate the parrot theme to check what it does. Why parrots? The story is a bit long, come to the Discord and ask :D */ + if (reqTheme === "parrot" && !req.url.includes(".css")) + res.redirect('/themes/parrot/images/parrot.svg'); + else + res.redirect(req.url.replace("theme", "themes/" + reqTheme)); + }); + + router.put('/theme/:newTheme', function (req, res, next) { + res.end("Ok"); + }); + + router.get('/config', function (req, res, next) { + if (fs.existsSync(configLocation)) { + let rawdata = fs.readFileSync(configLocation); + config = JSON.parse(rawdata); + res.send(JSON.stringify(config.frontend)); + res.end() + } else { + res.sendStatus(404); + } + }); + + return router; +} diff --git a/client/routes/uikit.js b/frontend/server/routes/uikit.js similarity index 100% rename from client/routes/uikit.js rename to frontend/server/routes/uikit.js diff --git a/client/routes/users.js b/frontend/server/routes/users.js similarity index 100% rename from client/routes/users.js rename to frontend/server/routes/users.js diff --git a/frontend/server/scripts/build-release.bat b/frontend/server/scripts/build-release.bat new file mode 100644 index 00000000..0c410d7e --- /dev/null +++ b/frontend/server/scripts/build-release.bat @@ -0,0 +1,13 @@ +call .\scripts\copy.bat + +echo D|xcopy /Y /S /E .\bin ..\..\build\frontend\bin +echo D|xcopy /Y /S /E .\public ..\..\build\frontend\public +echo D|xcopy /Y /S /E .\routes ..\..\build\frontend\routes +echo D|xcopy /Y /S /E .\views ..\..\build\frontend\views +echo D|xcopy /Y /S /E .\views ..\..\build\frontend\cert + +echo F|xcopy /Y .\app.js ..\..\build\frontend\app.js +echo F|xcopy /Y .\client.js ..\..\build\frontend\client.js +echo F|xcopy /Y .\package.json ..\..\build\frontend\package.json + +echo F|xcopy /Y /I .\*.vbs ..\..\build\frontend \ No newline at end of file diff --git a/frontend/server/scripts/copy.bat b/frontend/server/scripts/copy.bat new file mode 100644 index 00000000..170cff94 --- /dev/null +++ b/frontend/server/scripts/copy.bat @@ -0,0 +1,2 @@ +echo F|xcopy /Y ..\website\node_modules\leaflet\dist\leaflet.css .\public\stylesheets\leaflet\leaflet.css +echo F|xcopy /Y ..\website\node_modules\leaflet-gesture-handling\dist\leaflet-gesture-handling.css .\public\stylesheets\leaflet\leaflet-gesture-handling.css diff --git a/frontend/server/scripts/create-mock-dcs.bat b/frontend/server/scripts/create-mock-dcs.bat new file mode 100644 index 00000000..1d621eb9 --- /dev/null +++ b/frontend/server/scripts/create-mock-dcs.bat @@ -0,0 +1,2 @@ +echo F|xcopy /Y "..\..\olympus.json" "..\..\mock-dcs\Config\olympus.json" +echo D|xcopy /Y /S /E "..\..\databases" "..\..\mock-dcs\Mods\Services\Olympus\databases" \ No newline at end of file diff --git a/frontend/server/scripts/demo-server.bat b/frontend/server/scripts/demo-server.bat new file mode 100644 index 00000000..27a06af6 --- /dev/null +++ b/frontend/server/scripts/demo-server.bat @@ -0,0 +1,3 @@ +call .\scripts\copy.bat +call .\scripts\create-mock-dcs.bat +node .\bin\demo --config %1 \ No newline at end of file diff --git a/frontend/server/server.vbs b/frontend/server/server.vbs new file mode 100644 index 00000000..2120cccf --- /dev/null +++ b/frontend/server/server.vbs @@ -0,0 +1 @@ +CreateObject("Wscript.Shell").Run "npm run server -- --config """&WScript.Arguments(0)&"""", 1 \ No newline at end of file diff --git a/client/views/contextmenus/airbase.ejs b/frontend/server/views/contextmenus/airbase.ejs similarity index 100% rename from client/views/contextmenus/airbase.ejs rename to frontend/server/views/contextmenus/airbase.ejs diff --git a/client/views/contextmenus/airbasespawn.ejs b/frontend/server/views/contextmenus/airbasespawn.ejs similarity index 100% rename from client/views/contextmenus/airbasespawn.ejs rename to frontend/server/views/contextmenus/airbasespawn.ejs diff --git a/client/views/contextmenus/coalitionarea.ejs b/frontend/server/views/contextmenus/coalitionarea.ejs similarity index 100% rename from client/views/contextmenus/coalitionarea.ejs rename to frontend/server/views/contextmenus/coalitionarea.ejs diff --git a/frontend/server/views/contextmenus/map.ejs b/frontend/server/views/contextmenus/map.ejs new file mode 100644 index 00000000..4f375786 --- /dev/null +++ b/frontend/server/views/contextmenus/map.ejs @@ -0,0 +1,71 @@ +
    +
    +
    + + +
    +
    +

    Spawn history

    +
    +

    You do not have any units to show.

    +
    +
    +
    +
    +
    + + + + + + + +
    +
    + + + + +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    + +
    + + + + + +
    +
    + + + + + + +
    +
    +
    \ No newline at end of file diff --git a/client/views/contextmenus/unit.ejs b/frontend/server/views/contextmenus/unit.ejs similarity index 100% rename from client/views/contextmenus/unit.ejs rename to frontend/server/views/contextmenus/unit.ejs diff --git a/client/views/index.ejs b/frontend/server/views/index.ejs similarity index 97% rename from client/views/index.ejs rename to frontend/server/views/index.ejs index 774e38e6..c991ce06 100644 --- a/client/views/index.ejs +++ b/frontend/server/views/index.ejs @@ -27,6 +27,7 @@ + @@ -72,4 +73,4 @@ - \ No newline at end of file + diff --git a/client/views/other/dialogs.ejs b/frontend/server/views/other/dialogs.ejs similarity index 100% rename from client/views/other/dialogs.ejs rename to frontend/server/views/other/dialogs.ejs diff --git a/client/views/other/dialogs/advancedsettings.ejs b/frontend/server/views/other/dialogs/advancedsettings.ejs similarity index 100% rename from client/views/other/dialogs/advancedsettings.ejs rename to frontend/server/views/other/dialogs/advancedsettings.ejs diff --git a/client/views/other/dialogs/commandmodesettings.ejs b/frontend/server/views/other/dialogs/commandmodesettings.ejs similarity index 93% rename from client/views/other/dialogs/commandmodesettings.ejs rename to frontend/server/views/other/dialogs/commandmodesettings.ejs index 3b278812..5d783473 100644 --- a/client/views/other/dialogs/commandmodesettings.ejs +++ b/frontend/server/views/other/dialogs/commandmodesettings.ejs @@ -8,11 +8,13 @@
    +
    +
    \ No newline at end of file diff --git a/client/views/panels/unitinfo.ejs b/frontend/server/views/panels/unitinfo.ejs similarity index 100% rename from client/views/panels/unitinfo.ejs rename to frontend/server/views/panels/unitinfo.ejs diff --git a/client/views/panels/unitlist.ejs b/frontend/server/views/panels/unitlist.ejs similarity index 100% rename from client/views/panels/unitlist.ejs rename to frontend/server/views/panels/unitlist.ejs diff --git a/client/views/toolbars/commandmode.ejs b/frontend/server/views/toolbars/commandmode.ejs similarity index 75% rename from client/views/toolbars/commandmode.ejs rename to frontend/server/views/toolbars/commandmode.ejs index 1954bc66..69000053 100644 --- a/client/views/toolbars/commandmode.ejs +++ b/frontend/server/views/toolbars/commandmode.ejs @@ -3,5 +3,6 @@
    Spawn points
    - + \ No newline at end of file diff --git a/client/views/toolbars/primary.ejs b/frontend/server/views/toolbars/primary.ejs similarity index 57% rename from client/views/toolbars/primary.ejs rename to frontend/server/views/toolbars/primary.ejs index 70e130b8..268d3d27 100644 --- a/client/views/toolbars/primary.ejs +++ b/frontend/server/views/toolbars/primary.ejs @@ -6,7 +6,8 @@

    DCS Olympus

    -
    version {{OLYMPUS_VERSION_NUMBER}}.{{OLYMPUS_COMMIT_HASH}}
    +
    version {{OLYMPUS_VERSION_NUMBER}}.{{OLYMPUS_COMMIT_HASH}} +
    Discord @@ -31,14 +32,16 @@
    -
    ArcGIS Satellite
    +
    -
    Options
    +
    Options +
    @@ -57,17 +60,51 @@
    + data-on-click-params='{ "coalition": "blue" }' title="Toggle Blue coalition visibility">
    + data-on-click-params='{ "coalition": "red" }' title="Toggle Red coalition visibility">
    + data-on-click-params='{ "coalition": "neutral" }' title="Toggle Neutral coalition visibility">
    + + \ No newline at end of file diff --git a/client/views/uikit/uikit.ejs b/frontend/server/views/uikit/uikit.ejs similarity index 100% rename from client/views/uikit/uikit.ejs rename to frontend/server/views/uikit/uikit.ejs diff --git a/frontend/setup.bat b/frontend/setup.bat new file mode 100644 index 00000000..54ff5d29 --- /dev/null +++ b/frontend/setup.bat @@ -0,0 +1,15 @@ +cd website + +call npm install +call npm install -g watchify babelify tsify +call npm run build-debug + +cd .. + +cd server + +call npm install + +cd .. + +cd . > setup \ No newline at end of file diff --git a/client/.vscode/launch.json b/frontend/website/.vscode/launch.json similarity index 85% rename from client/.vscode/launch.json rename to frontend/website/.vscode/launch.json index c3765af0..50f1a45e 100644 --- a/client/.vscode/launch.json +++ b/frontend/website/.vscode/launch.json @@ -7,13 +7,13 @@ { "type": "chrome", "request": "launch", - "name": "Launch Chrome against localhost", + "name": "Launch Chrome", "url": "http://localhost:3000", "webRoot": "${workspaceFolder}/public/", "sourceMapPathOverrides": { "src/*": "${workspaceFolder}/src/*" }, - "preLaunchTask": "server", + "preLaunchTask": "watch", "port": 9222 } ] diff --git a/frontend/website/.vscode/tasks.json b/frontend/website/.vscode/tasks.json new file mode 100644 index 00000000..88db0e1e --- /dev/null +++ b/frontend/website/.vscode/tasks.json @@ -0,0 +1,29 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "check-setup", + "type": "shell", + "command": "cd .. ; ./check_setup.bat", + "isBackground": false + }, + { + "label": "watch", + "type": "shell", + "command": "./scripts/watch.bat", + "isBackground": true, + "problemMatcher":{ + "owner": "custom", + "base": "$tsc-watch", + "background": { + "activeOnStart": true, + "beginsPattern": "watchify", + "endsPattern": "bytes written" + } + }, + "dependsOn": ["check-setup"] + } + ] +} \ No newline at end of file diff --git a/client/@types/olympus/index.d.ts b/frontend/website/@types/olympus/index.d.ts similarity index 97% rename from client/@types/olympus/index.d.ts rename to frontend/website/@types/olympus/index.d.ts index fc420406..d244f748 100644 --- a/client/@types/olympus/index.d.ts +++ b/frontend/website/@types/olympus/index.d.ts @@ -105,6 +105,10 @@ declare module "constants/constants" { export const ROEs: string[]; export const reactionsToThreat: string[]; export const emissionsCountermeasures: string[]; + export const ERAS: { + name: string; + chronologicalOrder: number; + }[]; export const ROEDescriptions: string[]; export const reactionsToThreatDescriptions: string[]; export const emissionsCountermeasuresDescriptions: string[]; @@ -137,6 +141,7 @@ declare module "constants/constants" { Falklands: LatLng[]; Normandy: LatLng[]; SinaiMap: LatLng[]; + Kola: LatLng[]; }; export const mapBounds: { Syria: { @@ -171,15 +176,13 @@ declare module "constants/constants" { bounds: LatLngBounds; zoom: number; }; - }; - export const mapLayers: { - "ArcGIS Satellite": { - urlTemplate: string; - minZoom: number; - maxZoom: number; - attribution: string; + Kola: { + bounds: LatLngBounds; + zoom: number; }; - "USGS Topo": { + }; + export const defaultMapLayers: { + "ArcGIS Satellite": { urlTemplate: string; minZoom: number; maxZoom: number; @@ -191,24 +194,28 @@ declare module "constants/constants" { maxZoom: number; attribution: string; }; - OPENVKarte: { + "DCS Marianas Modern": ({ urlTemplate: string; minZoom: number; maxZoom: number; - attribution: string; - }; - "Esri.DeLorme": { + minNativeZoom?: undefined; + maxNativeZoom?: undefined; + attribution?: undefined; + } | { urlTemplate: string; + minNativeZoom: number; + maxNativeZoom: number; + minZoom: number; + maxZoom: number; + attribution?: undefined; + } | { + urlTemplate: string; + minNativeZoom: number; + maxNativeZoom: number; minZoom: number; maxZoom: number; attribution: string; - }; - CyclOSM: { - urlTemplate: string; - minZoom: number; - maxZoom: number; - attribution: string; - }; + })[]; }; export const IDLE = "Idle"; export const MOVE_UNIT = "Move unit"; @@ -231,6 +238,7 @@ declare module "constants/constants" { export const SHOW_UNIT_CONTACTS = "Show selected units contact lines"; export const SHOW_UNIT_PATHS = "Show selected unit paths"; export const SHOW_UNIT_TARGETS = "Show selected unit targets"; + export const DCS_LINK_PORT = "DCS Camera link port"; export enum DataIndexes { startOfData = 0, category = 1, @@ -358,6 +366,7 @@ declare module "controls/dropdown" { setOptionsElements(optionsElements: HTMLElement[]): void; getOptionElements(): HTMLCollection; addOptionElement(optionElement: HTMLElement): void; + addHorizontalDivider(): void; /** Select the active value of the dropdown * * @param idx The index of the element to select @@ -416,10 +425,6 @@ declare module "interfaces" { global { function getOlympusPlugin(): OlympusPlugin; } - export interface ConfigurationOptions { - port: number; - address: string; - } export interface ContextMenuOption { tooltip: string; src: string; @@ -497,6 +502,7 @@ declare module "interfaces" { location: LatLng; altitude?: number; loadout?: string; + skill?: string; liveryID: string; } export interface ObjectIconOptions { @@ -653,6 +659,7 @@ declare module "interfaces" { coalition: string; count: number; country: string; + skill: string; loadout: LoadoutBlueprint | undefined; airbase: Airbase | undefined; liveryID: string | undefined; @@ -787,6 +794,14 @@ declare module "other/utils" { export function generateUUIDv4(): string; export function keyEventWasInInput(event: KeyboardEvent): boolean; export function reciprocalHeading(heading: number): number; + /** + * Prepend numbers to the start of a string + * + * @param num subject number + * @param places places to pad + * @param decimal whether this is a decimal number or not + * + * */ export const zeroAppend: (num: number, places: number, decimal?: boolean) => string; export const zeroPad: (num: number, places: number) => string; export function similarity(s1: string, s2: string): number; @@ -832,6 +847,7 @@ declare module "other/utils" { }): UnitBlueprint | null; export function getMarkerCategoryByName(name: string): "aircraft" | "helicopter" | "groundunit-sam" | "navyunit" | "groundunit-other"; export function getUnitDatabaseByCategory(category: string): import("unit/databases/aircraftdatabase").AircraftDatabase | import("unit/databases/helicopterdatabase").HelicopterDatabase | import("unit/databases/groundunitdatabase").GroundUnitDatabase | import("unit/databases/navyunitdatabase").NavyUnitDatabase | null; + export function getCategoryBlueprintIconSVG(category: string, unitName: string): string | false; export function base64ToBytes(base64: string): ArrayBufferLike; export function enumToState(state: number): string; export function enumToROE(ROE: number): string; @@ -840,10 +856,11 @@ declare module "other/utils" { export function enumToCoalition(coalitionID: number): "" | "blue" | "red" | "neutral"; export function coalitionToEnum(coalition: string): 0 | 1 | 2; export function convertDateAndTimeToDate(dateAndTime: DateAndTime): Date; - export function createCheckboxOption(value: string, text: string, checked?: boolean, callback?: CallableFunction, options?: any): HTMLElement; + export function createCheckboxOption(text: string, description: string, checked?: boolean, callback?: CallableFunction, options?: any): HTMLElement; export function getCheckboxOptions(dropdown: Dropdown): { [key: string]: boolean; }; + export function createTextInputOption(text: string, description: string, initialValue: string, type: string, callback?: CallableFunction, options?: any): HTMLElement; export function getGroundElevation(latlng: LatLng, callback: CallableFunction): void; } declare module "controls/slider" { @@ -891,11 +908,13 @@ declare module "controls/unitspawnmenu" { getLabelDropdown(): Dropdown; getCountDropdown(): Dropdown; getLoadoutDropdown(): Dropdown; + getSkillDropdown(): Dropdown; getCountryDropdown(): Dropdown; getLiveryDropdown(): Dropdown; getLoadoutPreview(): HTMLDivElement; getAltitudeSlider(): Slider; setShowLoadout(showLoadout: boolean): void; + setShowSkill(showSkill: boolean): void; setShowAltitudeSlider(showAltitudeSlider: boolean): void; } export class AircraftSpawnMenu extends UnitSpawnMenu { @@ -1596,6 +1615,7 @@ declare module "map/map" { import { CoalitionAreaContextMenu } from "contextmenus/coalitionareacontextmenu"; import { AirbaseSpawnContextMenu } from "contextmenus/airbasespawnmenu"; export type MapMarkerVisibilityControl = { + "category"?: string; "image": string; "isProtected"?: boolean; "name": string; @@ -1610,7 +1630,9 @@ declare module "map/map" { * @param ID - the ID of the HTML element which will contain the context menu */ constructor(ID: string); - addVisibilityOption(option: string, defaultValue: boolean): void; + addVisibilityOption(option: string, defaultValue: boolean | number | string, options?: { + [key: string]: any; + }): void; setLayer(layerName: string): void; getLayers(): string[]; setState(state: string): void; @@ -1646,12 +1668,14 @@ declare module "map/map" { getSelectedCoalitionArea(): CoalitionArea | undefined; bringCoalitionAreaToBack(coalitionArea: CoalitionArea): void; getVisibilityOptions(): { - [key: string]: boolean; + [key: string]: string | number | boolean; }; isZooming(): boolean; getPreviousZoom(): number; getIsUnitProtected(unit: Unit): boolean; getMapMarkerVisibilityControls(): MapMarkerVisibilityControl[]; + setSlaveDCSCamera(newSlaveDCSCamera: boolean): void; + setCameraControlMode(newCameraControlMode: string): void; } } declare module "mission/bullseye" { @@ -1993,6 +2017,22 @@ declare module "unit/importexport/unitdatafileexport" { showForm(units: Unit[]): void; } } +declare module "schemas/schema" { + import Ajv from "ajv"; + import { AnySchemaObject } from "ajv/dist/core"; + abstract class JSONSchemaValidator { + #private; + constructor(schema: AnySchemaObject); + getAjv(): Ajv; + getCompiledValidator(): any; + getErrors(): any; + getSchema(): AnySchemaObject; + validate(data: any): any; + } + export class ImportFileJSONSchemaValidator extends JSONSchemaValidator { + constructor(); + } +} declare module "unit/importexport/unitdatafileimport" { import { Dialog } from "dialog/dialog"; import { UnitDataFile } from "unit/importexport/unitdatafile"; @@ -2421,12 +2461,11 @@ declare module "server/servermanager" { export class ServerManager { #private; constructor(); - toggleDemoEnabled(): void; setCredentials(newUsername: string, newPassword: string): void; GET(callback: CallableFunction, uri: string, options?: ServerRequestOptions, responseType?: string, force?: boolean): void; PUT(request: object, callback: CallableFunction): void; getConfig(callback: CallableFunction): void; - setAddress(address: string, port: number): void; + setAddress(address: string): void; getAirbases(callback: CallableFunction): void; getBullseye(callback: CallableFunction): void; getLogs(callback: CallableFunction, refresh?: boolean): void; @@ -2583,6 +2622,7 @@ declare module "olympusapp" { */ setLoginStatus(status: string): void; start(): void; + getConfig(): any; } } declare module "index" { diff --git a/frontend/website/package.json b/frontend/website/package.json new file mode 100644 index 00000000..f278b2d5 --- /dev/null +++ b/frontend/website/package.json @@ -0,0 +1,44 @@ +{ + "name": "DCSOlympus Website", + "version": "{{OLYMPUS_VERSION_NUMBER}}", + "private": true, + "scripts": { + "emit-declarations": "call ./scripts/emit-declarations.bat", + "build-release": "call ./scripts/build-release.bat", + "build-debug": "call ./scripts/build-debug.bat", + "watch": "call ./scripts/watch.bat" + }, + "devDependencies": { + "@babel/preset-env": "^7.21.4", + "@tanem/svg-injector": "^10.1.68", + "@turf/turf": "^6.5.0", + "@types/formatcoords": "^1.1.0", + "@types/geojson": "^7946.0.10", + "@types/leaflet": "^1.9.0", + "@types/node": "^18.16.1", + "@types/sortablejs": "^1.15.0", + "@types/svg-injector": "^0.0.29", + "ajv": "^8.12.0", + "babelify": "^10.0.0", + "browserify": "^17.0.0", + "concurrently": "^7.6.0", + "cp": "^0.2.0", + "esmify": "^2.1.1", + "formatcoords": "^1.1.3", + "geodesy": "^1.1.2", + "js-sha256": "^0.10.1", + "leaflet": "^1.9.3", + "leaflet-control-mini-map": "^0.4.0", + "leaflet-gesture-handling": "^1.2.2", + "leaflet-path-drag": "*", + "leaflet.nauticscale": "^1.1.0", + "nodemon": "^3.0.2", + "requirejs": "^2.3.6", + "sortablejs": "^1.15.0", + "tsify": "^5.0.4", + "tslib": "latest", + "typescript": "^4.9.4", + "usng.js": "^0.4.5", + "watchify": "^4.0.0" + } +} diff --git a/frontend/website/plugins/_boilerplate/copy.bat b/frontend/website/plugins/_boilerplate/copy.bat new file mode 100644 index 00000000..be0fc21e --- /dev/null +++ b/frontend/website/plugins/_boilerplate/copy.bat @@ -0,0 +1,11 @@ +set plugin-name=boilerplateplugin + +mkdir .\\..\\..\\..\\server\\public\\plugins\\%plugin-name% + +copy .\\index.js .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\index.js +copy .\\plugin.json .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\plugin.json +copy .\\style.css .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\style.css + + +mkdir .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\images +copy .\\images\\*.* .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\images\\ \ No newline at end of file diff --git a/client/plugins/_boilerplate/images/placeholder1x1.png b/frontend/website/plugins/_boilerplate/images/placeholder1x1.png similarity index 100% rename from client/plugins/_boilerplate/images/placeholder1x1.png rename to frontend/website/plugins/_boilerplate/images/placeholder1x1.png diff --git a/client/plugins/_boilerplate/package.json b/frontend/website/plugins/_boilerplate/package.json similarity index 100% rename from client/plugins/_boilerplate/package.json rename to frontend/website/plugins/_boilerplate/package.json diff --git a/client/plugins/_boilerplate/plugin.json b/frontend/website/plugins/_boilerplate/plugin.json similarity index 100% rename from client/plugins/_boilerplate/plugin.json rename to frontend/website/plugins/_boilerplate/plugin.json diff --git a/client/plugins/_boilerplate/readme.md b/frontend/website/plugins/_boilerplate/readme.md similarity index 100% rename from client/plugins/_boilerplate/readme.md rename to frontend/website/plugins/_boilerplate/readme.md diff --git a/client/plugins/_boilerplate/src/boilerplate.ts b/frontend/website/plugins/_boilerplate/src/boilerplate.ts similarity index 100% rename from client/plugins/_boilerplate/src/boilerplate.ts rename to frontend/website/plugins/_boilerplate/src/boilerplate.ts diff --git a/client/plugins/_boilerplate/src/index.ts b/frontend/website/plugins/_boilerplate/src/index.ts similarity index 100% rename from client/plugins/_boilerplate/src/index.ts rename to frontend/website/plugins/_boilerplate/src/index.ts diff --git a/client/plugins/_boilerplate/style.css b/frontend/website/plugins/_boilerplate/style.css similarity index 100% rename from client/plugins/_boilerplate/style.css rename to frontend/website/plugins/_boilerplate/style.css diff --git a/client/plugins/_boilerplate/tsconfig.json b/frontend/website/plugins/_boilerplate/tsconfig.json similarity index 100% rename from client/plugins/_boilerplate/tsconfig.json rename to frontend/website/plugins/_boilerplate/tsconfig.json diff --git a/frontend/website/plugins/controltips/copy.bat b/frontend/website/plugins/controltips/copy.bat new file mode 100644 index 00000000..867598a7 --- /dev/null +++ b/frontend/website/plugins/controltips/copy.bat @@ -0,0 +1,7 @@ +set plugin-name=controltipsplugin + +mkdir .\\..\\..\\..\\server\\public\\plugins\\%plugin-name% + +copy .\\index.js .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\index.js +copy .\\plugin.json .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\plugin.json +copy .\\style.css .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\style.css \ No newline at end of file diff --git a/client/plugins/controltips/package.json b/frontend/website/plugins/controltips/package.json similarity index 100% rename from client/plugins/controltips/package.json rename to frontend/website/plugins/controltips/package.json diff --git a/client/plugins/databasemanager/plugin.json b/frontend/website/plugins/controltips/plugin.json similarity index 100% rename from client/plugins/databasemanager/plugin.json rename to frontend/website/plugins/controltips/plugin.json diff --git a/client/plugins/controltips/src/controltipsplugin.ts b/frontend/website/plugins/controltips/src/controltipsplugin.ts similarity index 100% rename from client/plugins/controltips/src/controltipsplugin.ts rename to frontend/website/plugins/controltips/src/controltipsplugin.ts diff --git a/client/plugins/controltips/src/index.ts b/frontend/website/plugins/controltips/src/index.ts similarity index 100% rename from client/plugins/controltips/src/index.ts rename to frontend/website/plugins/controltips/src/index.ts diff --git a/frontend/website/plugins/controltips/style.css b/frontend/website/plugins/controltips/style.css new file mode 100644 index 00000000..0ab48856 --- /dev/null +++ b/frontend/website/plugins/controltips/style.css @@ -0,0 +1,33 @@ +#control-tips-panel { + align-self: center; + display: flex; + flex-flow: column wrap; + font-size: 13px; + justify-self: flex-end; + position: absolute; + right: 10px; + row-gap: 20px; + text-align: right; + z-index: 999; +} + +#control-tips-panel>* { + align-items: center; + align-self: end; + background-color: var(--background-steel); + border-radius: var(--border-radius-md); + color: white; + column-gap: 8px; + display: flex; + justify-items: right; + opacity: .9; + padding: 5px; + width: fit-content; +} + +#control-tips-panel>*>.key { + background-color: var(--background-grey); + border-radius: var(--border-radius-sm); + color: white; + padding: 1px 4px; +} \ No newline at end of file diff --git a/client/plugins/controltips/tsconfig.json b/frontend/website/plugins/controltips/tsconfig.json similarity index 100% rename from client/plugins/controltips/tsconfig.json rename to frontend/website/plugins/controltips/tsconfig.json diff --git a/client/plugins/databasemanager/.vscode/launch.json b/frontend/website/plugins/databasemanager/.vscode/launch.json similarity index 100% rename from client/plugins/databasemanager/.vscode/launch.json rename to frontend/website/plugins/databasemanager/.vscode/launch.json diff --git a/client/plugins/databasemanager/.vscode/tasks.json b/frontend/website/plugins/databasemanager/.vscode/tasks.json similarity index 100% rename from client/plugins/databasemanager/.vscode/tasks.json rename to frontend/website/plugins/databasemanager/.vscode/tasks.json diff --git a/frontend/website/plugins/databasemanager/copy.bat b/frontend/website/plugins/databasemanager/copy.bat new file mode 100644 index 00000000..56bc3cea --- /dev/null +++ b/frontend/website/plugins/databasemanager/copy.bat @@ -0,0 +1,7 @@ +set plugin-name=databasemanager + +mkdir .\\..\\..\\..\\server\\public\\plugins\\%plugin-name% + +copy .\\index.js .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\index.js +copy .\\plugin.json .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\plugin.json +copy .\\style.css .\\..\\..\\..\\server\\public\\plugins\\%plugin-name%\\style.css \ No newline at end of file diff --git a/frontend/website/plugins/databasemanager/index.js b/frontend/website/plugins/databasemanager/index.js new file mode 100644 index 00000000..9305ff01 --- /dev/null +++ b/frontend/website/plugins/databasemanager/index.js @@ -0,0 +1 @@ +!function(){var _$utils_8={};function addStringInput(a,t,e,i,n,s){var _=document.createElement("div"),l=document.createElement("dt"),r=document.createElement("dd");l.innerText=t;var o=document.createElement("input");o.value=e,o.textContent=e,o.type=null!=i?i:"text",o.disabled=null!=s&&s,o.onchange=()=>n(o.value),r.appendChild(o),_.appendChild(l),_.appendChild(r),_.classList.add("input-row"),a.appendChild(_)}function addDropdownInput(a,t,e,i,n,s){var _=document.createElement("div"),l=document.createElement("dt"),r=document.createElement("dd");l.innerText=t;var o=document.createElement("select");i.forEach(a=>{var t=document.createElement("option");t.value=a,t.innerText=a,o.appendChild(t)}),o.value=e,o.disabled=null!=s&&s,o.onchange=()=>n(o.value),r.appendChild(o),_.appendChild(l),_.appendChild(r),_.classList.add("input-row"),a.appendChild(_)}function addCheckboxInput(a,t,e,i,n){var s=document.createElement("div"),_=document.createElement("dt"),l=document.createElement("dd");_.innerText=t;var r=document.createElement("input");r.checked=e,r.type="checkbox",r.disabled=null!=n&&n,r.onchange=()=>i(r.checked),l.appendChild(r),s.appendChild(_),s.appendChild(l),s.classList.add("input-row"),a.appendChild(s)}function addLoadoutItemsEditor(a,t){var e=document.createElement("div");e.classList.add("dm-scroll-container","dm-items-container"),t.items.sort((a,t)=>a.name.localeCompare(t.name,void 0,{sensitivity:"base"})),t.items.forEach((i,n)=>{var s=document.createElement("div"),_=document.createElement("label");_.innerText="Name",s.appendChild(_);var l=document.createElement("input");s.appendChild(l),l.textContent=i.name,l.value=i.name,l.onchange=()=>{t.items[n].name=l.value};var r=document.createElement("label");r.innerText="Quantity",s.appendChild(r);var o=document.createElement("input");s.appendChild(o),o.textContent=String(i.quantity),o.value=String(i.quantity),o.type="number",o.step="1",o.onchange=()=>{t.items[n].quantity=parseInt(o.value)};var d=document.createElement("button");d.innerText="X",d.onclick=()=>{t.items.splice(n,1),a.dispatchEvent(new Event("refresh"))},s.appendChild(d),e.appendChild(s)}),a.appendChild(e);var i=document.createElement("div");i.classList.add("dm-new-item-input");var n=document.createElement("button");n.innerText="Add",i.appendChild(n),a.appendChild(i),n.addEventListener("click",e=>{null==t||t.items.push({name:"",quantity:1}),a.dispatchEvent(new Event("refresh"))})}function addNewElementInput(a,t){var e=document.createElement("div");e.classList.add("dm-new-element-input");var i=document.createElement("input");e.appendChild(i);var n=document.createElement("button");n.innerText="Add",n.addEventListener("click",a=>t(a,i)),e.appendChild(n),a.appendChild(e)}function addBlueprintsScroll(div,database,filter,callback){var scrollDiv=document.createElement("div");if(scrollDiv.classList.add("dm-scroll-container"),null!==database){var blueprints=database.blueprints;for(let key of Object.keys(blueprints).sort((a,t)=>a.localeCompare(t,void 0,{sensitivity:"base"}))){var addKey=!0;if(""!==filter)try{var blueprint=blueprints[key];addKey=eval(filter)}catch(_a){console.error("An error has occurred evaluating the blueprint filter")}if(addKey){var rowDiv=document.createElement("div");scrollDiv.appendChild(rowDiv);let a=document.createElement("div");a.innerHTML=`
    ${key}
    ${blueprints[key].label}
    `,a.onclick=()=>{callback(key);const t=document.getElementsByClassName("blueprint-selected");for(let a=0;a{console.log(t.checked),blueprints[key].enabled=t.checked},rowDiv.appendChild(t);var button=document.createElement("button");button.innerText="X",button.onclick=()=>{delete blueprints[key],div.dispatchEvent(new Event("refresh"))},rowDiv.appendChild(button)}}}div.appendChild(scrollDiv)}function addLoadoutsScroll(a,t,e){var i=document.createElement("div");i.classList.add("dm-scroll-container","dm-loadout-container"),t.sort((a,t)=>a.name.localeCompare(t.name,void 0,{sensitivity:"base"})),t.forEach((n,s)=>{var _=document.createElement("div");i.appendChild(_);var l=document.createElement("label");if(l.textContent=n.name,l.onclick=()=>{e(n)},_.appendChild(l),"Empty loadout"!==n.name){let e=document.createElement("input");e.type="checkbox",e.checked=n.enabled,e.onclick=()=>{console.log(e.checked),n.enabled=e.checked},_.appendChild(e);var r=document.createElement("button");r.innerText="X",r.onclick=()=>{t.splice(s,1),a.dispatchEvent(new Event("refresh"))},_.appendChild(r)}}),a.appendChild(i)}function arrayToString(a){return"["+a.join(", ")+"]"}function stringToArray(a){var t;return null!==(t=a.match(/(\w)+/g))&&void 0!==t?t:[]}Object.defineProperty(_$utils_8,"__esModule",{value:!0}),_$utils_8.stringToArray=_$utils_8.arrayToString=_$utils_8.addLoadoutsScroll=_$utils_8.addBlueprintsScroll=_$utils_8.addNewElementInput=_$utils_8.addLoadoutItemsEditor=_$utils_8.addCheckboxInput=_$utils_8.addDropdownInput=_$utils_8.addStringInput=void 0,_$utils_8.addStringInput=addStringInput,_$utils_8.addDropdownInput=addDropdownInput,_$utils_8.addCheckboxInput=addCheckboxInput,_$utils_8.addLoadoutItemsEditor=addLoadoutItemsEditor,_$utils_8.addNewElementInput=addNewElementInput,_$utils_8.addBlueprintsScroll=addBlueprintsScroll,_$utils_8.addLoadoutsScroll=addLoadoutsScroll,_$utils_8.arrayToString=arrayToString,_$utils_8.stringToArray=stringToArray;var _$uniteditor_7={};Object.defineProperty(_$uniteditor_7,"__esModule",{value:!0}),_$uniteditor_7.UnitEditor=void 0,_$uniteditor_7.UnitEditor=class{constructor(a,t,e){this.blueprint=null,this.database=null,this.visible=!1,this.contentDiv1=a,this.contentDiv2=t,this.contentDiv3=e,this.contentDiv1.addEventListener("refresh",()=>{this.visible&&this.show()}),this.contentDiv2.addEventListener("refresh",()=>{this.visible&&null!==this.blueprint&&this.setBlueprint(this.blueprint)}),this.contentDiv3.addEventListener("refresh",()=>{this.visible&&null!==this.blueprint&&this.setBlueprint(this.blueprint)})}setDatabase(a){this.database=JSON.parse(JSON.stringify({blueprints:a.getBlueprints(!0)}))}show(a=""){if(this.visible=!0,this.contentDiv1.replaceChildren(),this.contentDiv2.replaceChildren(),this.contentDiv3.replaceChildren(),null!=this.database){var t=document.createElement("label");t.innerText="Units list",this.contentDiv1.appendChild(t);var e=document.createElement("input");e.value=a,this.contentDiv1.appendChild(e),e.onchange=a=>{this.show(a.target.value)},this.addBlueprints(a)}}hide(){this.visible=!1,this.contentDiv1.replaceChildren(),this.contentDiv2.replaceChildren(),this.contentDiv3.replaceChildren()}getDatabase(){return this.database}addBlueprints(a=""){this.database&&((0,_$utils_8.addBlueprintsScroll)(this.contentDiv1,this.database,a,a=>{null!=this.database&&this.setBlueprint(this.database.blueprints[a])}),(0,_$utils_8.addNewElementInput)(this.contentDiv1,(a,t)=>{""!=t.value&&this.addBlueprint(t.value)}))}};var _$loadouteditor_5={},_LoadoutEditor_contentDiv,_LoadoutEditor_loadout,_LoadoutEditor_visible,__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(a,t,e,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?a!==t||!n:!t.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(a,e):n?n.value=e:t.set(a,e),e},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(a,t,e,i){if("a"===e&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?a!==t||!i:!t.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===e?i:"a"===e?i.call(a):i?i.value:t.get(a)};Object.defineProperty(_$loadouteditor_5,"__esModule",{value:!0}),_$loadouteditor_5.LoadoutEditor=void 0,_$loadouteditor_5.LoadoutEditor=class{constructor(a){_LoadoutEditor_contentDiv.set(this,void 0),_LoadoutEditor_loadout.set(this,null),_LoadoutEditor_visible.set(this,!1),__classPrivateFieldSet(this,_LoadoutEditor_contentDiv,a,"f"),__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f").addEventListener("refresh",()=>{__classPrivateFieldGet(this,_LoadoutEditor_visible,"f")&&this.show()})}setLoadout(a){__classPrivateFieldSet(this,_LoadoutEditor_loadout,a,"f")}show(){__classPrivateFieldSet(this,_LoadoutEditor_visible,!0,"f"),__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f").replaceChildren();var a=document.createElement("label");if(a.innerText="Loadout properties",__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f").appendChild(a),__classPrivateFieldGet(this,_LoadoutEditor_loadout,"f")){var t=__classPrivateFieldGet(this,_LoadoutEditor_loadout,"f");(0,_$utils_8.addStringInput)(__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f"),"Name",t.name,"text",a=>{t.name=a,__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f").dispatchEvent(new Event("refresh"))}),(0,_$utils_8.addStringInput)(__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f"),"Code",t.code,"text",a=>{t.code=a}),(0,_$utils_8.addStringInput)(__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f"),"Roles",(0,_$utils_8.arrayToString)(t.roles),"text",a=>{t.roles=(0,_$utils_8.stringToArray)(a)}),(0,_$utils_8.addLoadoutItemsEditor)(__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f"),__classPrivateFieldGet(this,_LoadoutEditor_loadout,"f"))}}hide(){__classPrivateFieldSet(this,_LoadoutEditor_visible,!1,"f"),__classPrivateFieldGet(this,_LoadoutEditor_contentDiv,"f").replaceChildren()}},_LoadoutEditor_contentDiv=new WeakMap,_LoadoutEditor_loadout=new WeakMap,_LoadoutEditor_visible=new WeakMap;var _$airuniteditor_1={},_AirUnitEditor_loadoutEditor,____classPrivateFieldSet_1=this&&this.__classPrivateFieldSet||function(a,t,e,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?a!==t||!n:!t.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(a,e):n?n.value=e:t.set(a,e),e},____classPrivateFieldGet_1=this&&this.__classPrivateFieldGet||function(a,t,e,i){if("a"===e&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?a!==t||!i:!t.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===e?i:"a"===e?i.call(a):i?i.value:t.get(a)};Object.defineProperty(_$airuniteditor_1,"__esModule",{value:!0}),_$airuniteditor_1.AirUnitEditor=void 0;class AirUnitEditor extends _$uniteditor_7.UnitEditor{constructor(a,t,e){super(a,t,e),_AirUnitEditor_loadoutEditor.set(this,null),____classPrivateFieldSet_1(this,_AirUnitEditor_loadoutEditor,new _$loadouteditor_5.LoadoutEditor(this.contentDiv3),"f"),this.contentDiv3.addEventListener("refresh",()=>{var a;this.visible&&(null===(a=____classPrivateFieldGet_1(this,_AirUnitEditor_loadoutEditor,"f"))||void 0===a||a.show())})}setBlueprint(a){var t,e,i,n,s,_,l,r;this.blueprint=a,null!==this.blueprint&&(this.contentDiv2.replaceChildren(),(r=document.createElement("label")).innerText="Unit properties",this.contentDiv2.appendChild(r),(0,_$utils_8.addStringInput)(this.contentDiv2,"Name",a.name,"text",t=>{a.name=t},!0),(0,_$utils_8.addStringInput)(this.contentDiv2,"Label",a.label,"text",t=>{a.label=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Short label",a.shortLabel,"text",t=>{a.shortLabel=t}),(0,_$utils_8.addDropdownInput)(this.contentDiv2,"Coalition",a.coalition,["","blue","red"],t=>{a.coalition=t}),(0,_$utils_8.addDropdownInput)(this.contentDiv2,"Era",a.era,["WW2","Early Cold War","Mid Cold War","Late Cold War","Modern"],t=>{a.era=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Filename",null!==(t=a.filename)&&void 0!==t?t:"","text",t=>{a.filename=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Cost",null!==(e=String(a.cost))&&void 0!==e?e:"","number",t=>{a.cost=parseFloat(t)}),(0,_$utils_8.addCheckboxInput)(this.contentDiv2,"Can target point",null!==(i=a.canTargetPoint)&&void 0!==i&&i,t=>{a.canTargetPoint=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Description",null!==(n=a.description)&&void 0!==n?n:"","text",t=>{a.description=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Tags",null!==(s=a.tags)&&void 0!==s?s:"","text",t=>{a.tags=t}),(r=document.createElement("label")).innerText="Loadouts",this.contentDiv2.appendChild(r),(0,_$utils_8.addLoadoutsScroll)(this.contentDiv2,null!==(_=a.loadouts)&&void 0!==_?_:[],a=>{var t,e;null===(t=____classPrivateFieldGet_1(this,_AirUnitEditor_loadoutEditor,"f"))||void 0===t||t.setLoadout(a),null===(e=____classPrivateFieldGet_1(this,_AirUnitEditor_loadoutEditor,"f"))||void 0===e||e.show()}),(0,_$utils_8.addNewElementInput)(this.contentDiv2,(a,t)=>{this.addLoadout(t.value)}),null===(l=____classPrivateFieldGet_1(this,_AirUnitEditor_loadoutEditor,"f"))||void 0===l||l.hide())}addBlueprint(a){null!=this.database&&(this.database.blueprints[a]={name:a,coalition:"",label:"",shortLabel:"",era:"",loadouts:[],enabled:!0},this.show(),this.setBlueprint(this.database.blueprints[a]))}addLoadout(a){var t;a&&null!==this.blueprint&&(null===(t=this.blueprint.loadouts)||void 0===t||t.push({name:a,code:"",fuel:1,items:[],roles:[],enabled:!0}),this.setBlueprint(this.blueprint))}hide(){var a;super.hide(),null===(a=____classPrivateFieldGet_1(this,_AirUnitEditor_loadoutEditor,"f"))||void 0===a||a.hide()}}_$airuniteditor_1.AirUnitEditor=AirUnitEditor,_AirUnitEditor_loadoutEditor=new WeakMap;var _$grounduniteditor_3={},_GroundUnitEditor_blueprint,____classPrivateFieldSet_3=this&&this.__classPrivateFieldSet||function(a,t,e,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?a!==t||!n:!t.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(a,e):n?n.value=e:t.set(a,e),e},____classPrivateFieldGet_3=this&&this.__classPrivateFieldGet||function(a,t,e,i){if("a"===e&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?a!==t||!i:!t.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===e?i:"a"===e?i.call(a):i?i.value:t.get(a)};Object.defineProperty(_$grounduniteditor_3,"__esModule",{value:!0}),_$grounduniteditor_3.GroundUnitEditor=void 0;class GroundUnitEditor extends _$uniteditor_7.UnitEditor{constructor(a,t,e){super(a,t,e),_GroundUnitEditor_blueprint.set(this,null)}setBlueprint(a){var t,e,i,n,s,_,l,r,o,d,u,c,g,v,b,h,p,P,D,M,m;if(____classPrivateFieldSet_3(this,_GroundUnitEditor_blueprint,a,"f"),null!==____classPrivateFieldGet_3(this,_GroundUnitEditor_blueprint,"f")){this.contentDiv2.replaceChildren();var f=document.createElement("label");f.innerText="Unit properties",this.contentDiv2.appendChild(f),(0,_$utils_8.addStringInput)(this.contentDiv2,"Name",a.name,"text",t=>{a.name=t},!0),(0,_$utils_8.addStringInput)(this.contentDiv2,"Label",a.label,"text",t=>{a.label=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Short label",a.shortLabel,"text",t=>{a.shortLabel=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Type",null!==(t=a.type)&&void 0!==t?t:"","text",t=>{a.type=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Unit when grouped",null!==(e=a.unitWhenGrouped)&&void 0!==e?e:"","text",t=>{a.unitWhenGrouped=t}),(0,_$utils_8.addDropdownInput)(this.contentDiv2,"Coalition",a.coalition,["","blue","red"],t=>{a.coalition=t}),(0,_$utils_8.addDropdownInput)(this.contentDiv2,"Era",a.era,["WW2","Early Cold War","Mid Cold War","Late Cold War","Modern"],t=>{a.era=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Cost",null!==(i=String(a.cost))&&void 0!==i?i:"","number",t=>{a.cost=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Acquisition range [m]",null!==(n=String(a.acquisitionRange))&&void 0!==n?n:"","number",t=>{a.acquisitionRange=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Engagement range [m]",null!==(s=String(a.engagementRange))&&void 0!==s?s:"","number",t=>{a.engagementRange=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Targeting range [m]",null!==(_=String(a.targetingRange))&&void 0!==_?_:"","number",t=>{a.targetingRange=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Aim method range [m]",null!==(l=String(a.aimMethodRange))&&void 0!==l?l:"","number",t=>{a.aimMethodRange=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Barrel height [m]",null!==(r=String(a.barrelHeight))&&void 0!==r?r:"","number",t=>{a.barrelHeight=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Muzzle velocity [m/s]",null!==(o=String(a.muzzleVelocity))&&void 0!==o?o:"","number",t=>{a.muzzleVelocity=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Aim time [s]",null!==(d=String(a.aimTime))&&void 0!==d?d:"","number",t=>{a.aimTime=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Shots to fire",null!==(u=String(a.shotsToFire))&&void 0!==u?u:"","number",t=>{a.shotsToFire=Math.round(parseFloat(t))}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Shots base interval [s]",null!==(c=String(a.shotsBaseInterval))&&void 0!==c?c:"","number",t=>{a.shotsBaseInterval=Math.round(parseFloat(t))}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Shots base scatter [\xb0]",null!==(g=String(a.shotsBaseScatter))&&void 0!==g?g:"","number",t=>{a.shotsBaseScatter=Math.round(parseFloat(t))}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Alertness time constant [s]",null!==(v=String(a.alertnessTimeConstant))&&void 0!==v?v:"","number",t=>{a.alertnessTimeConstant=Math.round(parseFloat(t))}),(0,_$utils_8.addCheckboxInput)(this.contentDiv2,"Can target point",null!==(b=a.canTargetPoint)&&void 0!==b&&b,t=>{a.canTargetPoint=t}),(0,_$utils_8.addCheckboxInput)(this.contentDiv2,"Can rearm",null!==(h=a.canRearm)&&void 0!==h&&h,t=>{a.canRearm=t}),(0,_$utils_8.addCheckboxInput)(this.contentDiv2,"Can operate as AAA",null!==(p=a.canAAA)&&void 0!==p&&p,t=>{a.canAAA=t}),(0,_$utils_8.addCheckboxInput)(this.contentDiv2,"Indirect fire (e.g. mortar)",null!==(P=a.indirectFire)&&void 0!==P&&P,t=>{a.indirectFire=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Description",null!==(D=a.description)&&void 0!==D?D:"","text",t=>{a.description=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Tags",null!==(M=a.tags)&&void 0!==M?M:"","text",t=>{a.tags=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Marker file",null!==(m=a.markerFile)&&void 0!==m?m:"","text",t=>{a.markerFile=t})}}addBlueprint(a){null!=this.database&&(this.database.blueprints[a]={name:a,coalition:"",label:"",shortLabel:"",era:"",enabled:!0},this.show(),this.setBlueprint(this.database.blueprints[a]))}}_$grounduniteditor_3.GroundUnitEditor=GroundUnitEditor,_GroundUnitEditor_blueprint=new WeakMap;var _$navyuniteditor_6={},_NavyUnitEditor_blueprint,____classPrivateFieldSet_6=this&&this.__classPrivateFieldSet||function(a,t,e,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?a!==t||!n:!t.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(a,e):n?n.value=e:t.set(a,e),e},____classPrivateFieldGet_6=this&&this.__classPrivateFieldGet||function(a,t,e,i){if("a"===e&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?a!==t||!i:!t.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===e?i:"a"===e?i.call(a):i?i.value:t.get(a)};Object.defineProperty(_$navyuniteditor_6,"__esModule",{value:!0}),_$navyuniteditor_6.NavyUnitEditor=void 0;class NavyUnitEditor extends _$uniteditor_7.UnitEditor{constructor(a,t,e){super(a,t,e),_NavyUnitEditor_blueprint.set(this,null)}setBlueprint(a){var t,e,i,n;if(____classPrivateFieldSet_6(this,_NavyUnitEditor_blueprint,a,"f"),null!==____classPrivateFieldGet_6(this,_NavyUnitEditor_blueprint,"f")){this.contentDiv2.replaceChildren();var s=document.createElement("label");s.innerText="Unit properties",this.contentDiv2.appendChild(s),(0,_$utils_8.addStringInput)(this.contentDiv2,"Name",a.name,"text",t=>{a.name=t},!0),(0,_$utils_8.addStringInput)(this.contentDiv2,"Label",a.label,"text",t=>{a.label=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Short label",a.shortLabel,"text",t=>{a.shortLabel=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Type",null!==(t=a.type)&&void 0!==t?t:"","text",t=>{a.type=t}),(0,_$utils_8.addDropdownInput)(this.contentDiv2,"Coalition",a.coalition,["","blue","red"],t=>{a.coalition=t}),(0,_$utils_8.addDropdownInput)(this.contentDiv2,"Era",a.era,["WW2","Early Cold War","Mid Cold War","Late Cold War","Modern"],t=>{a.era=t}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Cost",null!==(e=String(a.cost))&&void 0!==e?e:"","number",t=>{a.cost=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Barrel height [m]",null!==(i=String(a.barrelHeight))&&void 0!==i?i:"","number",t=>{a.barrelHeight=parseFloat(t)}),(0,_$utils_8.addStringInput)(this.contentDiv2,"Muzzle velocity [m/s]",null!==(n=String(a.muzzleVelocity))&&void 0!==n?n:"","number",t=>{a.muzzleVelocity=parseFloat(t)})}}addBlueprint(a){null!=this.database&&(this.database.blueprints[a]={name:a,coalition:"",label:"",shortLabel:"",era:"",enabled:!0},this.show(),this.setBlueprint(this.database.blueprints[a]))}}_$navyuniteditor_6.NavyUnitEditor=NavyUnitEditor,_NavyUnitEditor_blueprint=new WeakMap;var _$databasemanagerplugin_2={},_DatabaseManagerPlugin_instances,_DatabaseManagerPlugin_app,_DatabaseManagerPlugin_element,_DatabaseManagerPlugin_mainContentContainer,_DatabaseManagerPlugin_contentDiv1,_DatabaseManagerPlugin_contentDiv2,_DatabaseManagerPlugin_contentDiv3,_DatabaseManagerPlugin_button1,_DatabaseManagerPlugin_button2,_DatabaseManagerPlugin_button3,_DatabaseManagerPlugin_button4,_DatabaseManagerPlugin_button5,_DatabaseManagerPlugin_button6,_DatabaseManagerPlugin_button7,_DatabaseManagerPlugin_button8,_DatabaseManagerPlugin_button9,_DatabaseManagerPlugin_aircraftEditor,_DatabaseManagerPlugin_helicopterEditor,_DatabaseManagerPlugin_groundUnitEditor,_DatabaseManagerPlugin_navyUnitEditor,_DatabaseManagerPlugin_hideAll,_DatabaseManagerPlugin_loadDatabases,_DatabaseManagerPlugin_saveDatabases,_DatabaseManagerPlugin_resetToDefaultDatabases,_DatabaseManagerPlugin_restoreToPreviousDatabases,_DatabaseManagerPlugin_uploadDatabase,_DatabaseManagerPlugin_resetToDefaultDatabase,_DatabaseManagerPlugin_restoreToPreviousDatabase,____classPrivateFieldSet_2=this&&this.__classPrivateFieldSet||function(a,t,e,i,n){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?a!==t||!n:!t.has(a))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?n.call(a,e):n?n.value=e:t.set(a,e),e},____classPrivateFieldGet_2=this&&this.__classPrivateFieldGet||function(a,t,e,i){if("a"===e&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?a!==t||!i:!t.has(a))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===e?i:"a"===e?i.call(a):i?i.value:t.get(a)};Object.defineProperty(_$databasemanagerplugin_2,"__esModule",{value:!0}),_$databasemanagerplugin_2.DatabaseManagerPlugin=void 0,_$databasemanagerplugin_2.DatabaseManagerPlugin=class{constructor(){_DatabaseManagerPlugin_instances.add(this),_DatabaseManagerPlugin_app.set(this,void 0),_DatabaseManagerPlugin_element.set(this,void 0),_DatabaseManagerPlugin_mainContentContainer.set(this,void 0),_DatabaseManagerPlugin_contentDiv1.set(this,void 0),_DatabaseManagerPlugin_contentDiv2.set(this,void 0),_DatabaseManagerPlugin_contentDiv3.set(this,void 0),_DatabaseManagerPlugin_button1.set(this,void 0),_DatabaseManagerPlugin_button2.set(this,void 0),_DatabaseManagerPlugin_button3.set(this,void 0),_DatabaseManagerPlugin_button4.set(this,void 0),_DatabaseManagerPlugin_button5.set(this,void 0),_DatabaseManagerPlugin_button6.set(this,void 0),_DatabaseManagerPlugin_button7.set(this,void 0),_DatabaseManagerPlugin_button8.set(this,void 0),_DatabaseManagerPlugin_button9.set(this,void 0),_DatabaseManagerPlugin_aircraftEditor.set(this,void 0),_DatabaseManagerPlugin_helicopterEditor.set(this,void 0),_DatabaseManagerPlugin_groundUnitEditor.set(this,void 0),_DatabaseManagerPlugin_navyUnitEditor.set(this,void 0),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_element,document.createElement("div"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_element,"f").id="database-manager-panel",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_element,"f").oncontextmenu=()=>!1,____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_element,"f").classList.add("ol-dialog"),document.body.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_element,"f")),this.toggle(!1);let a=document.createElement("div");____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button1,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f").classList.add("tab-button"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f").textContent="Aircraft database",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f").onclick=()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_hideAll).call(this),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_aircraftEditor,"f").show(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f").classList.add("selected")},a.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button2,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button2,"f").classList.add("tab-button"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button2,"f").textContent="Helicopter database",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button2,"f").onclick=()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_hideAll).call(this),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_helicopterEditor,"f").show(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button2,"f").classList.add("selected")},a.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button2,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button3,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button3,"f").classList.add("tab-button"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button3,"f").textContent="Ground Unit database",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button3,"f").onclick=()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_hideAll).call(this),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_groundUnitEditor,"f").show(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button3,"f").classList.add("selected")},a.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button3,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button4,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button4,"f").classList.add("tab-button"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button4,"f").textContent="Navy Unit database",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button4,"f").onclick=()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_hideAll).call(this),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_navyUnitEditor,"f").show(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button4,"f").classList.add("selected")},a.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button4,"f")),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_element,"f").appendChild(a),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_mainContentContainer,document.createElement("div"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_mainContentContainer,"f").classList.add("dm-container"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_element,"f").appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_mainContentContainer,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_contentDiv1,document.createElement("div"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv1,"f").classList.add("dm-content-container","ol-scrollable"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_mainContentContainer,"f").appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv1,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_contentDiv2,document.createElement("div"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv2,"f").classList.add("dm-content-container","ol-scrollable"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_mainContentContainer,"f").appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv2,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_contentDiv3,document.createElement("div"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv3,"f").classList.add("dm-content-container","ol-scrollable"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_mainContentContainer,"f").appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv3,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_aircraftEditor,new _$airuniteditor_1.AirUnitEditor(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv1,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv2,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv3,"f")),"f"),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_helicopterEditor,new _$airuniteditor_1.AirUnitEditor(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv1,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv2,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv3,"f")),"f"),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_groundUnitEditor,new _$grounduniteditor_3.GroundUnitEditor(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv1,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv2,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv3,"f")),"f"),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_navyUnitEditor,new _$navyuniteditor_6.NavyUnitEditor(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv1,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv2,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_contentDiv3,"f")),"f");let t=document.createElement("div");____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button5,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button5,"f").textContent="Save",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button5,"f").title="Save the changes on the server",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button5,"f").onclick=()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_saveDatabases).call(this)},t.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button5,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button6,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button6,"f").textContent="Discard",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button6,"f").title="Discard all changes and reload the database from the server",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button6,"f").onclick=()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_loadDatabases).call(this)},t.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button6,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button7,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button7,"f").textContent="Reset defaults",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button7,"f").onclick=()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_resetToDefaultDatabases).call(this)},____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button7,"f").title="Reset the databases to the default values",t.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button7,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button8,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button8,"f").textContent="Restore previous",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button8,"f").onclick=()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_restoreToPreviousDatabases).call(this)},____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button8,"f").title="Restore the previously saved databases. Use this if you saved a database by mistake.",t.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button8,"f")),____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_button9,document.createElement("button"),"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button9,"f").textContent="Close",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button9,"f").title="Close the Database Manager",____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button9,"f").onclick=()=>{this.toggle(!1)},t.appendChild(____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button9,"f")),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_element,"f").appendChild(t)}getName(){return"Database Control Plugin"}initialize(a){var t;____classPrivateFieldSet_2(this,_DatabaseManagerPlugin_app,a,"f"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f").getContextManager().add("databaseManager",{allowUnitCopying:!1,allowUnitPasting:!1,useSpawnMenu:!1,useUnitControlPanel:!1,useUnitInfoPanel:!1}),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_loadDatabases).call(this);var e=document.createElement("div"),i=document.createElement("button");i.textContent="Database manager",e.appendChild(i);var n=null===(t=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===t?void 0:t.getToolbarsManager().get("primaryToolbar"),s=n.getMainDropdown().getOptionElements(),_=Array.prototype.slice.call(s);return _.splice(_.length-3,0,e),n.getMainDropdown().setOptionsElements(_),i.onclick=()=>{var a;n.getMainDropdown().close(),"Game master"===(null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a?void 0:a.getMissionManager().getCommandModeOptions().commandMode)&&this.toggle()},!0}getElement(){return ____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_element,"f")}toggle(a){a?this.getElement().classList.toggle("hide",!a):this.getElement().classList.toggle("hide"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f")&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f").getContextManager().setContext(this.getElement().classList.contains("hide")?"olympus":"databaseManager")}},_DatabaseManagerPlugin_app=new WeakMap,_DatabaseManagerPlugin_element=new WeakMap,_DatabaseManagerPlugin_mainContentContainer=new WeakMap,_DatabaseManagerPlugin_contentDiv1=new WeakMap,_DatabaseManagerPlugin_contentDiv2=new WeakMap,_DatabaseManagerPlugin_contentDiv3=new WeakMap,_DatabaseManagerPlugin_button1=new WeakMap,_DatabaseManagerPlugin_button2=new WeakMap,_DatabaseManagerPlugin_button3=new WeakMap,_DatabaseManagerPlugin_button4=new WeakMap,_DatabaseManagerPlugin_button5=new WeakMap,_DatabaseManagerPlugin_button6=new WeakMap,_DatabaseManagerPlugin_button7=new WeakMap,_DatabaseManagerPlugin_button8=new WeakMap,_DatabaseManagerPlugin_button9=new WeakMap,_DatabaseManagerPlugin_aircraftEditor=new WeakMap,_DatabaseManagerPlugin_helicopterEditor=new WeakMap,_DatabaseManagerPlugin_groundUnitEditor=new WeakMap,_DatabaseManagerPlugin_navyUnitEditor=new WeakMap,_DatabaseManagerPlugin_instances=new WeakSet,_DatabaseManagerPlugin_hideAll=function(){____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_aircraftEditor,"f").hide(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_helicopterEditor,"f").hide(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_groundUnitEditor,"f").hide(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_navyUnitEditor,"f").hide(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f").classList.remove("selected"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button2,"f").classList.remove("selected"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button3,"f").classList.remove("selected"),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button4,"f").classList.remove("selected")},_DatabaseManagerPlugin_loadDatabases=function(){var a,t,e,i,n=null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a?void 0:a.getAircraftDatabase();null!=n&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_aircraftEditor,"f").setDatabase(n);var s=null===(t=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===t?void 0:t.getHelicopterDatabase();null!=s&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_helicopterEditor,"f").setDatabase(s);var _=null===(e=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===e?void 0:e.getGroundUnitDatabase();null!=_&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_groundUnitEditor,"f").setDatabase(_);var l=null===(i=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===i?void 0:i.getNavyUnitDatabase();null!=l&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_navyUnitEditor,"f").setDatabase(l),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_hideAll).call(this),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_aircraftEditor,"f").show(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f").classList.add("selected")},_DatabaseManagerPlugin_saveDatabases=function(){var a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_aircraftEditor,"f").getDatabase();a&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_uploadDatabase).call(this,a,"aircraftdatabase","Aircraft database",()=>{var a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_helicopterEditor,"f").getDatabase();a&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_uploadDatabase).call(this,a,"helicopterDatabase","Helicopter database",()=>{var a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_groundUnitEditor,"f").getDatabase();a&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_uploadDatabase).call(this,a,"groundUnitDatabase","Ground Unit database",()=>{var a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_navyUnitEditor,"f").getDatabase();a&&____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_uploadDatabase).call(this,a,"navyUnitDatabase","Navy Unit database",()=>{var a,t,e,i,n;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getAircraftDatabase().load(()=>{}),null===(t=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===t||t.getHelicopterDatabase().load(()=>{}),null===(e=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===e||e.getGroundUnitDatabase().load(()=>{}),null===(i=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===i||i.getNavyUnitDatabase().load(()=>{}),null===(n=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===n||n.getServerManager().reloadDatabases(()=>{var a,t;null===(t=null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a?void 0:a.getPopupsManager().get("infoPopup"))||void 0===t||t.setText("Olympus core databases reloaded")})})})})})},_DatabaseManagerPlugin_resetToDefaultDatabases=function(){____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_resetToDefaultDatabase).call(this,"aircraftdatabase","Aircraft database",()=>{var a;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getAircraftDatabase().load(()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_resetToDefaultDatabase).call(this,"helicopterdatabase","Helicopter database",()=>{var a;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getHelicopterDatabase().load(()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_resetToDefaultDatabase).call(this,"groundunitdatabase","Ground Unit database",()=>{var a;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getGroundUnitDatabase().load(()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_resetToDefaultDatabase).call(this,"navyunitdatabase","Navy Unit database",()=>{var a;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getNavyUnitDatabase().load(()=>{var a;____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_loadDatabases).call(this),null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getServerManager().reloadDatabases(()=>{var a,t;null===(t=null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a?void 0:a.getPopupsManager().get("infoPopup"))||void 0===t||t.setText("Olympus core databases reloaded")}),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_hideAll).call(this),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_aircraftEditor,"f").show(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f").classList.add("selected")})})})})})})})})},_DatabaseManagerPlugin_restoreToPreviousDatabases=function(){____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_restoreToPreviousDatabase).call(this,"aircraftdatabase","Aircraft database",()=>{var a;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getAircraftDatabase().load(()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_restoreToPreviousDatabase).call(this,"helicopterdatabase","Helicopter database",()=>{var a;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getHelicopterDatabase().load(()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_restoreToPreviousDatabase).call(this,"groundunitdatabase","Ground Unit database",()=>{var a;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getGroundUnitDatabase().load(()=>{____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_restoreToPreviousDatabase).call(this,"navyunitdatabase","Navy Unit database",()=>{var a;null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getNavyUnitDatabase().load(()=>{var a;____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_loadDatabases).call(this),null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a||a.getServerManager().reloadDatabases(()=>{var a,t;null===(t=null===(a=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===a?void 0:a.getPopupsManager().get("infoPopup"))||void 0===t||t.setText("Olympus core databases reloaded")}),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_instances,"m",_DatabaseManagerPlugin_hideAll).call(this),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_aircraftEditor,"f").show(),____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_button1,"f").classList.add("selected")})})})})})})})})},_DatabaseManagerPlugin_uploadDatabase=function(a,t,e,i){var n=new XMLHttpRequest;n.open("PUT","/api/databases/save/units/"+t),n.setRequestHeader("Content-Type","application/json"),n.onload=a=>{var t,s,_,l;200==n.status?(null===(s=null===(t=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===t?void 0:t.getPopupsManager().get("infoPopup"))||void 0===s||s.setText(e+" saved successfully"),i()):null===(l=null===(_=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===_?void 0:_.getPopupsManager().get("infoPopup"))||void 0===l||l.setText("An error has occurred while saving the "+e)},n.onerror=a=>{var t,i;null===(i=null===(t=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===t?void 0:t.getPopupsManager().get("infoPopup"))||void 0===i||i.setText("An error has occurred while saving the "+e)},n.send(JSON.stringify(a))},_DatabaseManagerPlugin_resetToDefaultDatabase=function(a,t,e){var i=new XMLHttpRequest;i.open("PUT","/api/databases/reset/units/"+a),i.setRequestHeader("Content-Type","application/json"),i.onload=a=>{var n,s,_,l;200==i.status?(null===(s=null===(n=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===n?void 0:n.getPopupsManager().get("infoPopup"))||void 0===s||s.setText(t+" reset successfully"),e()):null===(l=null===(_=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===_?void 0:_.getPopupsManager().get("infoPopup"))||void 0===l||l.setText("An error has occurred while resetting the "+t)},i.onerror=a=>{var e,i;null===(i=null===(e=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===e?void 0:e.getPopupsManager().get("infoPopup"))||void 0===i||i.setText("An error has occurred while resetting the "+t)},i.send("")},_DatabaseManagerPlugin_restoreToPreviousDatabase=function(a,t,e){var i=new XMLHttpRequest;i.open("PUT","/api/databases/restore/units/"+a),i.setRequestHeader("Content-Type","application/json"),i.onload=a=>{var n,s,_,l;200==i.status?(null===(s=null===(n=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===n?void 0:n.getPopupsManager().get("infoPopup"))||void 0===s||s.setText(t+" restored successfully"),e()):null===(l=null===(_=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===_?void 0:_.getPopupsManager().get("infoPopup"))||void 0===l||l.setText("An error has occurred while restoring the "+t)},i.onerror=a=>{var e,i;null===(i=null===(e=____classPrivateFieldGet_2(this,_DatabaseManagerPlugin_app,"f"))||void 0===e?void 0:e.getPopupsManager().get("infoPopup"))||void 0===i||i.setText("An error has occurred while restoring the "+t)},i.send("")};var _$index_4={};Object.defineProperty(_$index_4,"__esModule",{value:!0}),globalThis.getOlympusPlugin=()=>new _$databasemanagerplugin_2.DatabaseManagerPlugin}(); \ No newline at end of file diff --git a/client/plugins/databasemanager/package.json b/frontend/website/plugins/databasemanager/package.json similarity index 100% rename from client/plugins/databasemanager/package.json rename to frontend/website/plugins/databasemanager/package.json diff --git a/frontend/website/plugins/databasemanager/plugin.json b/frontend/website/plugins/databasemanager/plugin.json new file mode 100644 index 00000000..357d8f13 --- /dev/null +++ b/frontend/website/plugins/databasemanager/plugin.json @@ -0,0 +1,6 @@ +{ + "name": "Database Manager", + "version": "0.0.1", + "description": "This plugin allows to edit the unit databases", + "author": "DCSOlympus team" +} \ No newline at end of file diff --git a/client/plugins/databasemanager/src/airuniteditor.ts b/frontend/website/plugins/databasemanager/src/airuniteditor.ts similarity index 100% rename from client/plugins/databasemanager/src/airuniteditor.ts rename to frontend/website/plugins/databasemanager/src/airuniteditor.ts diff --git a/client/plugins/databasemanager/src/databasemanagerplugin.ts b/frontend/website/plugins/databasemanager/src/databasemanagerplugin.ts similarity index 100% rename from client/plugins/databasemanager/src/databasemanagerplugin.ts rename to frontend/website/plugins/databasemanager/src/databasemanagerplugin.ts diff --git a/client/plugins/databasemanager/src/grounduniteditor.ts b/frontend/website/plugins/databasemanager/src/grounduniteditor.ts similarity index 100% rename from client/plugins/databasemanager/src/grounduniteditor.ts rename to frontend/website/plugins/databasemanager/src/grounduniteditor.ts diff --git a/client/plugins/databasemanager/src/index.ts b/frontend/website/plugins/databasemanager/src/index.ts similarity index 100% rename from client/plugins/databasemanager/src/index.ts rename to frontend/website/plugins/databasemanager/src/index.ts diff --git a/client/plugins/databasemanager/src/loadouteditor.ts b/frontend/website/plugins/databasemanager/src/loadouteditor.ts similarity index 100% rename from client/plugins/databasemanager/src/loadouteditor.ts rename to frontend/website/plugins/databasemanager/src/loadouteditor.ts diff --git a/client/plugins/databasemanager/src/navyuniteditor.ts b/frontend/website/plugins/databasemanager/src/navyuniteditor.ts similarity index 100% rename from client/plugins/databasemanager/src/navyuniteditor.ts rename to frontend/website/plugins/databasemanager/src/navyuniteditor.ts diff --git a/client/plugins/databasemanager/src/uniteditor.ts b/frontend/website/plugins/databasemanager/src/uniteditor.ts similarity index 100% rename from client/plugins/databasemanager/src/uniteditor.ts rename to frontend/website/plugins/databasemanager/src/uniteditor.ts diff --git a/client/plugins/databasemanager/src/utils.ts b/frontend/website/plugins/databasemanager/src/utils.ts similarity index 100% rename from client/plugins/databasemanager/src/utils.ts rename to frontend/website/plugins/databasemanager/src/utils.ts diff --git a/frontend/website/plugins/databasemanager/style.css b/frontend/website/plugins/databasemanager/style.css new file mode 100644 index 00000000..f8c80213 --- /dev/null +++ b/frontend/website/plugins/databasemanager/style.css @@ -0,0 +1,295 @@ +#database-manager-panel { + flex-direction: column; + display: flex; + width: 80%; + height: 80%; + padding: 10px; + border-radius: 5px; + background-color: var(--background-steel) !important; + z-index: 9999999; +} + +@media (min-width: 1200px) { + .dm-container { + flex-direction: row; + } +} + +@media (max-width: 1200px) { + .dm-container { + flex-direction: column; + overflow-y: auto; + } +} + +#database-manager-panel * { + font-size: 13; + font-family: 'Open Sans', sans-serif !important; + user-select: none; +} + +#database-manager-panel>div:first-child { + display: flex; + align-items: center; +} + +#database-manager-panel>div:last-child { + display: flex; + column-gap: 5px; + align-items: center; + justify-content: end; + justify-items: end; + margin-top: 5px; +} + +#database-manager-panel>div:last-child>button { + border: 1px solid white; +} + +.dm-container { + background-color: var(--background-grey); + border: 2px solid #777777; + position: relative; + display: flex; + width: 100%; + padding: 5px; + height: calc(100% - 64px - 5px); + border-radius: 0px 5px 5px 5px; +} + +.dm-content-container { + position: relative; + margin: 10px; + display: flex; + flex-direction: column; + row-gap: 5px; + max-height: 100%; + padding: 10px; +} + +@media (min-width: 1200px) { + .dm-content-container { + height: calc(100% - 20px); + } + + .dm-content-container:nth-of-type(1) { + width: 400px; + } + + .dm-content-container:nth-of-type(2) { + width: 500px; + } + + .dm-content-container:nth-of-type(3) { + flex: 1; + } +} + +@media (max-width: 1200px) { + .dm-content-container { + width: calc(100% - 20px); + } + + .dm-content-container:nth-of-type(1) { + height: 30%; + } + + .dm-content-container:nth-of-type(2) { + height: 50%; + } + + .dm-content-container:nth-of-type(3) { + flex: 1; + } +} + +.dm-content-container>label { + font-size: 18px !important; + font-weight: bold; +} + +.dm-scroll-container { + display: flex; + flex-direction: column; + overflow-y: scroll; + max-height: 100%; + color: black; + font-weight: bold; +} + +#database-manager-panel input { + font-weight: bold; +} + +.dm-scroll-container>div:nth-child(even) { + background-color: gainsboro; +} + +.dm-scroll-container>div:nth-child(odd) { + background-color: white; +} + +.dm-scroll-container>div *:nth-child(1) { + height: 100%; + width: calc(100% - 25px); + padding: 2px; + word-wrap: break-word; +} + +.dm-scroll-container>div *:nth-child(1):hover { + background-color: var(--accent-dark-blue); + color: white; + cursor: pointer; +} + +.blueprint-selected { + background-color: var(--accent-light-blue) !important; + color: white; +} + +.dm-scroll-container>div { + display: flex; + align-items: center; + justify-content: space-between; +} + +.dm-scroll-container>div>div { + display: flex; + align-items: center; + justify-content: space-between; +} + +.dm-scroll-container>div>button { + height: 20px; + width: 20px; + padding: 0px; +} + +.dm-scroll-container>div>div>div:nth-child(1) { + width: fit-content; +} + +.dm-scroll-container>div>div>div:nth-child(2) { + overflow: hidden; + text-wrap: nowrap; + text-overflow: ellipsis; + font-weight: normal; +} + +.input-row { + width: 100%; + display: flex; + flex-direction: row; +} + +@media (max-width: 1200px) { + .dm-content-container label { + width: 100%; + } + .input-row { + width: 50%; + } +} + +.input-row>dt { + width: 250px; +} + +.input-row>dd { + width: 100%; + text-align: right; +} + +.input-row>dd>* { + width: 100%; + font-weight: bold; +} + +.input-row>dd>*[type="checkbox"] { + width: 20px; + font-weight: bold; +} + +.dm-loadout-container { + max-height: 100%; + max-width: 500px; + width: 100%; +} + +.dm-items-container { + max-height: 100%; + height: fit-content; +} + +.dm-items-container>div { + display: flex; + align-items: center; + column-gap: 2px; +} + +.dm-items-container>div>label { + width: 80px !important; +} + +.dm-items-container div>input:nth-of-type(1) { + flex: 1; + font-weight: bold; +} + +.dm-items-container div>input:nth-of-type(2) { + width: 40px; + font-weight: bold; +} + +.dm-new-element-input { + display: flex; + flex-direction: row; + column-gap: 2px; + width: 100%; + align-items: center; +} + +.dm-new-element-input>input { + width: 100%; +} + +.dm-new-element-input>button { + width: 60px; +} + +.dm-new-item-input { + display: flex; + justify-content: end; +} + +.dm-new-item-input>button { + width: 60px; +} + +.tab-button { + transform: translateY(+3px); + background-color: var(--background-steel); + border-radius: 0; + border-bottom: 2px solid transparent !important; + border-top: 2px solid #777777 !important; + border-left: 2px solid #777777 !important; + border-right: 0px solid #777777 !important; +} + +.tab-button.selected { + background-color: var(--background-grey); + z-index: 10; +} + +.tab-button:first-of-type { + border-top-left-radius: 5px; +} + +.tab-button:last-of-type { + border-top-right-radius: 5px; + border-right: 2px solid #777777 !important; +} + +#database-manager-panel button :not(.dm-scroll-container>div) { + border: 1px solid white; +} \ No newline at end of file diff --git a/client/plugins/databasemanager/tsconfig.json b/frontend/website/plugins/databasemanager/tsconfig.json similarity index 100% rename from client/plugins/databasemanager/tsconfig.json rename to frontend/website/plugins/databasemanager/tsconfig.json diff --git a/client/sample.png b/frontend/website/sample.png similarity index 100% rename from client/sample.png rename to frontend/website/sample.png diff --git a/frontend/website/scripts/build-debug.bat b/frontend/website/scripts/build-debug.bat new file mode 100644 index 00000000..8d5328b7 --- /dev/null +++ b/frontend/website/scripts/build-debug.bat @@ -0,0 +1 @@ +call browserify --debug .\src\index.ts -o ..\server\public\javascripts\bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ] diff --git a/frontend/website/scripts/build-release.bat b/frontend/website/scripts/build-release.bat new file mode 100644 index 00000000..dcd7830d --- /dev/null +++ b/frontend/website/scripts/build-release.bat @@ -0,0 +1 @@ +call browserify .\src\index.ts -o ..\..\build\frontend\public\javascripts\bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ] diff --git a/frontend/website/scripts/emit-declarations.bat b/frontend/website/scripts/emit-declarations.bat new file mode 100644 index 00000000..a324c677 --- /dev/null +++ b/frontend/website/scripts/emit-declarations.bat @@ -0,0 +1 @@ +tsc --project tsconfig.json --declaration --emitDeclarationOnly --outfile .\@types\olympus\index.d.ts \ No newline at end of file diff --git a/frontend/website/scripts/watch.bat b/frontend/website/scripts/watch.bat new file mode 100644 index 00000000..d62a3599 --- /dev/null +++ b/frontend/website/scripts/watch.bat @@ -0,0 +1 @@ +watchify .\src\index.ts --debug -o ..\server\public\javascripts\bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ] -v \ No newline at end of file diff --git a/client/src/constants/constants.ts b/frontend/website/src/constants/constants.ts similarity index 82% rename from client/src/constants/constants.ts rename to frontend/website/src/constants/constants.ts index a9552b16..d845cbe9 100644 --- a/client/src/constants/constants.ts +++ b/frontend/website/src/constants/constants.ts @@ -26,6 +26,23 @@ export const ROEs: string[] = ["free", "designated", "", "return", "hold"]; export const reactionsToThreat: string[] = ["none", "manoeuvre", "passive", "evade"]; export const emissionsCountermeasures: string[] = ["silent", "attack", "defend", "free"]; +export const ERAS = [{ + "name": "Early Cold War", + "chronologicalOrder": 2 +}, { + "name": "Late Cold War", + "chronologicalOrder": 4 +}, { + "name": "Mid Cold War", + "chronologicalOrder": 3 +}, { + "name": "Modern", + "chronologicalOrder": 5 +}, { + "name": "WW2", + "chronologicalOrder": 1 +}]; + export const ROEDescriptions: string[] = [ "Free (Attack anyone)", "Designated (Attack the designated target only) \nWARNING: Ground and Navy units don't respect this ROE, it will be equivalent to weapons FREE.", @@ -105,24 +122,31 @@ export const minimapBoundaries = { ], "Falklands": [ // South Atlantic new LatLng(-49.097217, -79.418267), - new LatLng(-56.874517,-79.418267), + new LatLng(-56.874517, -79.418267), new LatLng(-56.874517, -43.316433), new LatLng(-49.097217, -43.316433), new LatLng(-49.097217, -79.418267) - ], + ], "Normandy": [ // Normandy new LatLng(50.44, -3.29), - new LatLng(48.12,-3.29), + new LatLng(48.12, -3.29), new LatLng(48.12, 3.70), new LatLng(50.44, 3.70), new LatLng(50.44, -3.29) - ], + ], "SinaiMap": [ // Sinai new LatLng(34.312222, 28.523333), new LatLng(25.946944, 28.523333), new LatLng(25.946944, 36.897778), new LatLng(34.312222, 36.897778), new LatLng(34.312222, 28.523333) + ], + "Kola": [ // Kola + new LatLng(72.055300, 4.0140000), + new LatLng(64.421145, 10.353076), + new LatLng(63.570300, 39.364000), + new LatLng(71.48000, 48.091100), + new LatLng(72.055300, 4.01400003) ] }; @@ -135,46 +159,12 @@ export const mapBounds = { "Falklands": { bounds: new LatLngBounds([-49.097217, -79.418267], [-56.874517, -43.316433]), zoom: 3 }, "Normandy": { bounds: new LatLngBounds([50.44, -3.29], [48.12, 3.70]), zoom: 5 }, "SinaiMap": { bounds: new LatLngBounds([34.312222, 28.523333], [25.946944, 36.897778]), zoom: 4 }, + "Kola": { bounds: new LatLngBounds([61.59999, 4.29982], [75.05179, 44.29982]), zoom: 3} } -export const mapLayers = { - "ArcGIS Satellite": { - urlTemplate: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}", - minZoom: 1, - maxZoom: 19, - attribution: "Tiles © Esri — Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Mapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community" - }, - "USGS Topo": { - urlTemplate: 'https://basemap.nationalmap.gov/arcgis/rest/services/USGSTopo/MapServer/tile/{z}/{y}/{x}', - minZoom: 1, - maxZoom: 14, - attribution: 'Tiles courtesy of the U.S. Geological Survey' - }, - "OpenStreetMap Mapnik": { - urlTemplate: 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', - minZoom: 1, - maxZoom: 20, - attribution: '© OpenStreetMap contributors' - }, - "OPENVKarte": { - urlTemplate: 'https://tileserver.memomaps.de/tilegen/{z}/{x}/{y}.png', - minZoom: 1, - maxZoom: 20, - attribution: 'Map memomaps.de CC-BY-SA, map data © OpenStreetMap contributors' - }, - "Esri.DeLorme": { - urlTemplate: 'https://server.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer/tile/{z}/{y}/{x}', - minZoom: 1, - maxZoom: 11, - attribution: 'Tiles © Esri — Copyright: ©2012 DeLorme', - }, - "CyclOSM": { - urlTemplate: 'https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/{z}/{x}/{y}.png', - minZoom: 1, - maxZoom: 20, - attribution: 'CyclOSM | Map data: © OpenStreetMap contributors' - } -} +export const defaultMapMirrors = {} + +export const defaultMapLayers = {} /* Map constants */ export const IDLE = "Idle"; @@ -190,7 +180,7 @@ export const MAP_MARKER_CONTROLS: MapMarkerVisibilityControl[] = [{ "toggles": ["human"], "tooltip": "Toggle human players' visibility" }, { - "image": "visibility/head-side-virus-solid.svg", + "image": "visibility/olympus.svg", "isProtected": false, "name": "Olympus", "protectable": false, @@ -204,16 +194,19 @@ export const MAP_MARKER_CONTROLS: MapMarkerVisibilityControl[] = [{ "toggles": ["dcs"], "tooltip": "Toggle DCS-controlled units' visibility" }, { + "category": "Aircraft", "image": "visibility/aircraft.svg", "name": "Aircraft", "toggles": ["aircraft"], "tooltip": "Toggle aircraft's visibility" }, { + "category": "Helicopter", "image": "visibility/helicopter.svg", "name": "Helicopter", "toggles": ["helicopter"], "tooltip": "Toggle helicopters' visibility" }, { + "category": "AirDefence", "image": "visibility/groundunit-sam.svg", "name": "Air defence", "toggles": ["groundunit-sam"], @@ -224,6 +217,7 @@ export const MAP_MARKER_CONTROLS: MapMarkerVisibilityControl[] = [{ "toggles": ["groundunit"], "tooltip": "Toggle ground units' visibility" }, { + "category": "GroundUnit", "image": "visibility/navyunit.svg", "name": "Naval", "toggles": ["navyunit"], @@ -237,7 +231,7 @@ export const MAP_MARKER_CONTROLS: MapMarkerVisibilityControl[] = [{ export const IADSTypes = ["AAA", "SAM Site", "Radar (EWR)"]; export const IADSDensities: { [key: string]: number } = { "AAA": 0.8, "SAM Site": 0.1, "Radar (EWR)": 0.05 }; -export const GROUND_UNIT_AIR_DEFENCE_REGEX:RegExp = /(\b(AAA|SAM|MANPADS?|[mM]anpads?)|[sS]tinger\b)/; +export const GROUND_UNIT_AIR_DEFENCE_REGEX: RegExp = /(\b(AAA|SAM|MANPADS?|[mM]anpads?)|[sS]tinger\b)/; export const HIDE_GROUP_MEMBERS = "Hide group members when zoomed out"; export const SHOW_UNIT_LABELS = "Show unit labels (L)"; export const SHOW_UNITS_ENGAGEMENT_RINGS = "Show units threat range rings (Q)"; @@ -247,6 +241,8 @@ export const FILL_SELECTED_RING = "Fill the threat range rings of selected units export const SHOW_UNIT_CONTACTS = "Show selected units contact lines"; export const SHOW_UNIT_PATHS = "Show selected unit paths"; export const SHOW_UNIT_TARGETS = "Show selected unit targets"; +export const DCS_LINK_PORT = "DCS Camera link port"; +export const DCS_LINK_RATIO = "DCS Camera zoom"; export enum DataIndexes { startOfData = 0, diff --git a/client/src/context/context.ts b/frontend/website/src/context/context.ts similarity index 100% rename from client/src/context/context.ts rename to frontend/website/src/context/context.ts diff --git a/client/src/context/contextmanager.ts b/frontend/website/src/context/contextmanager.ts similarity index 100% rename from client/src/context/contextmanager.ts rename to frontend/website/src/context/contextmanager.ts diff --git a/client/src/context/contextmenumanager.ts b/frontend/website/src/context/contextmenumanager.ts similarity index 100% rename from client/src/context/contextmenumanager.ts rename to frontend/website/src/context/contextmenumanager.ts diff --git a/client/src/contextmenus/airbasecontextmenu.ts b/frontend/website/src/contextmenus/airbasecontextmenu.ts similarity index 100% rename from client/src/contextmenus/airbasecontextmenu.ts rename to frontend/website/src/contextmenus/airbasecontextmenu.ts diff --git a/client/src/contextmenus/airbasespawnmenu.ts b/frontend/website/src/contextmenus/airbasespawnmenu.ts similarity index 100% rename from client/src/contextmenus/airbasespawnmenu.ts rename to frontend/website/src/contextmenus/airbasespawnmenu.ts diff --git a/client/src/contextmenus/coalitionareacontextmenu.ts b/frontend/website/src/contextmenus/coalitionareacontextmenu.ts similarity index 100% rename from client/src/contextmenus/coalitionareacontextmenu.ts rename to frontend/website/src/contextmenus/coalitionareacontextmenu.ts diff --git a/client/src/contextmenus/contextmenu.ts b/frontend/website/src/contextmenus/contextmenu.ts similarity index 100% rename from client/src/contextmenus/contextmenu.ts rename to frontend/website/src/contextmenus/contextmenu.ts diff --git a/client/src/contextmenus/mapcontextmenu.ts b/frontend/website/src/contextmenus/mapcontextmenu.ts similarity index 76% rename from client/src/contextmenus/mapcontextmenu.ts rename to frontend/website/src/contextmenus/mapcontextmenu.ts index d7619c99..bff15bc3 100644 --- a/client/src/contextmenus/mapcontextmenu.ts +++ b/frontend/website/src/contextmenus/mapcontextmenu.ts @@ -5,8 +5,10 @@ import { Switch } from "../controls/switch"; import { GAME_MASTER } from "../constants/constants"; import { CoalitionArea } from "../map/coalitionarea/coalitionarea"; import { AirDefenceUnitSpawnMenu, AircraftSpawnMenu, GroundUnitSpawnMenu, HelicopterSpawnMenu, NavyUnitSpawnMenu } from "../controls/unitspawnmenu"; -import { Airbase } from "../mission/airbase"; import { SmokeMarker } from "../map/markers/smokemarker"; +import { UnitSpawnTable } from "../interfaces"; +import { getCategoryBlueprintIconSVG, getUnitDatabaseByCategory } from "../other/utils"; +import { SVGInjector } from "@tanem/svg-injector"; /** The MapContextMenu is the main contextmenu shown to the user whenever it rightclicks on the map. It is the primary interaction method for the user. * It allows to spawn units, create explosions and smoke, and edit CoalitionAreas. @@ -96,6 +98,8 @@ export class MapContextMenu extends ContextMenu { this.getContainer()?.addEventListener("hide", () => this.#airDefenceUnitSpawnMenu.clearCirclesPreviews()); this.getContainer()?.addEventListener("hide", () => this.#groundUnitSpawnMenu.clearCirclesPreviews()); this.getContainer()?.addEventListener("hide", () => this.#navyUnitSpawnMenu.clearCirclesPreviews()); + + this.#setupHistory(); } /** Show the contextmenu on top of the map, usually at the location where the user has clicked on it. @@ -257,4 +261,91 @@ export class MapContextMenu extends ContextMenu { this.#groundUnitSpawnMenu.setCountries(); this.#navyUnitSpawnMenu.setCountries(); } + + /** Handles all of the logic for historal logging. + * + */ + #setupHistory() { + /* Set up the tab clicks */ + const spawnModes = this.getContainer()?.querySelectorAll(".spawn-mode"); + const activeCoalitionLabel = document.getElementById("active-coalition-label"); + const tabs = this.getContainer()?.querySelectorAll(".spawn-mode-tab"); + + // Default selected tab to the "spawn now" option + if (tabs) tabs[tabs.length-1].classList.add("selected"); + + tabs?.forEach((btn:Element) => { + btn.addEventListener("click", (ev:MouseEventInit) => { + // Highlight tab + tabs.forEach(tab => tab.classList.remove("selected")); + btn.classList.add("selected"); + + // Hide/reset + spawnModes?.forEach(div => div.classList.add("hide")); + + const prevSiblings = []; + let prev = btn.previousElementSibling; + + /* Tabs and content windows are assumed to be in the same order */ + // Count previous + while ( prev ) { + prevSiblings.push(prev); + prev = prev.previousElementSibling; + } + + // Show content + if (spawnModes && spawnModes[prevSiblings.length]) { + spawnModes[prevSiblings.length].classList.remove("hide"); + } + + // We don't want to see the "Spawn [coalition] unit" label + if (activeCoalitionLabel) activeCoalitionLabel.classList.toggle("hide", !btn.hasAttribute("data-show-label")); + }); + }); + + const history = document.getElementById("spawn-history-menu"); + const maxEntries = 20; + + /** Listen for unit spawned **/ + document.addEventListener( "unitSpawned", (ev:CustomEventInit) => { + const buttons = history.querySelectorAll("button"); + const detail:any = ev.detail; + if (buttons.length === 0) history.innerHTML = ""; // Take out any "no data" messages + const button = document.createElement("button"); + button.title = "Click to spawn"; + button.setAttribute("data-spawned-coalition", detail.coalition); + button.setAttribute("data-unit-type", detail.unitSpawnTable[0].unitType); + button.setAttribute("data-unit-qty", detail.unitSpawnTable.length); + + const db = getUnitDatabaseByCategory(detail.category); + button.innerHTML = `${db?.getByName(detail.unitSpawnTable[0].unitType)?.label} (${detail.unitSpawnTable.length})`; + + // Remove a previous instance to save clogging up the list + const previous:any = [].slice.call(buttons).find( (button:Element) => ( + detail.coalition === button.getAttribute("data-spawned-coalition") && + detail.unitSpawnTable[0].unitType === button.getAttribute("data-unit-type") && + detail.unitSpawnTable.length === parseInt(button.getAttribute("data-unit-qty") || "-1"))); + + if (previous instanceof HTMLElement) previous.remove(); + + /* Click to do the spawn */ + button.addEventListener("click", (ev:MouseEventInit) => { + detail.unitSpawnTable.forEach((table:UnitSpawnTable, i:number) => { + table.location = this.getLatLng(); // Set to new menu location + table.location.lat += 0.00015 * i; + }); + getApp().getUnitsManager().spawnUnits(detail.category, detail.unitSpawnTable, detail.coalition, detail.immediate, detail.airbase, detail.country); + this.hide(); + }); + + /* Insert into DOM */ + history.prepend(button); + SVGInjector(button.querySelectorAll("img")); + + /* Trim down to max number of entries */ + while (history.querySelectorAll("button").length > maxEntries) { + history.childNodes[maxEntries].remove(); + } + }); + } } \ No newline at end of file diff --git a/client/src/contextmenus/unitcontextmenu.ts b/frontend/website/src/contextmenus/unitcontextmenu.ts similarity index 100% rename from client/src/contextmenus/unitcontextmenu.ts rename to frontend/website/src/contextmenus/unitcontextmenu.ts diff --git a/client/src/controls/control.ts b/frontend/website/src/controls/control.ts similarity index 100% rename from client/src/controls/control.ts rename to frontend/website/src/controls/control.ts diff --git a/client/src/controls/dropdown.ts b/frontend/website/src/controls/dropdown.ts similarity index 97% rename from client/src/controls/dropdown.ts rename to frontend/website/src/controls/dropdown.ts index 1a0c4b6b..99694154 100644 --- a/client/src/controls/dropdown.ts +++ b/frontend/website/src/controls/dropdown.ts @@ -26,7 +26,9 @@ export class Dropdown { if (options != null) this.setOptions(options); - (this.#container.querySelector(".ol-select-value") as HTMLElement)?.addEventListener("click", (ev) => { this.#toggle(); }); + (this.#container.querySelector(".ol-select-value") as HTMLElement)?.addEventListener("click", (ev) => { + if (!this.#container.hasAttribute("disabled") && !this.#container.closest("disabled")) this.#toggle(); + }); document.addEventListener("click", (ev) => { if (!(this.#value.contains(ev.target as Node) || this.#options.contains(ev.target as Node) || this.#container.contains(ev.target as Node))) { @@ -115,6 +117,13 @@ export class Dropdown { this.#options.appendChild(optionElement); } + addHorizontalDivider() { + let div = document.createElement("div"); + let hr = document.createElement('hr'); + div.appendChild(hr); + this.#options.appendChild(div); + } + /** Select the active value of the dropdown * * @param idx The index of the element to select diff --git a/client/src/controls/slider.ts b/frontend/website/src/controls/slider.ts similarity index 98% rename from client/src/controls/slider.ts rename to frontend/website/src/controls/slider.ts index c715165d..f3ab89e2 100644 --- a/client/src/controls/slider.ts +++ b/frontend/website/src/controls/slider.ts @@ -104,7 +104,7 @@ export class Slider extends Control { /* Update the position of the slider */ var percentValue = parseFloat(this.#slider.value) / parseFloat(this.#slider.max) * 90 + 5; - this.#slider.style.background = `linear-gradient(to right, var(--accent-light-blue) 5%, var(--accent-light-blue) ${percentValue}%, var(--background-grey) ${percentValue}%, var(--background-grey) 100%)` + this.#slider.style.background = `linear-gradient(to right, var(--accent-light-blue) 5%, var(--accent-light-blue) ${percentValue}%, var(--background-dark-grey) ${percentValue}%, var(--background-dark-grey) 100%)` } this.setActive(true); } diff --git a/client/src/controls/switch.ts b/frontend/website/src/controls/switch.ts similarity index 100% rename from client/src/controls/switch.ts rename to frontend/website/src/controls/switch.ts diff --git a/client/src/controls/unitspawnmenu.ts b/frontend/website/src/controls/unitspawnmenu.ts similarity index 92% rename from client/src/controls/unitspawnmenu.ts rename to frontend/website/src/controls/unitspawnmenu.ts index eebcaa31..f2cea1cd 100644 --- a/client/src/controls/unitspawnmenu.ts +++ b/frontend/website/src/controls/unitspawnmenu.ts @@ -27,6 +27,7 @@ export abstract class UnitSpawnMenu { coalition: "blue", count: 1, country: "", + skill: "Excellent", loadout: undefined, airbase: undefined, liveryID: undefined, @@ -38,6 +39,7 @@ export abstract class UnitSpawnMenu { #countryCodes: any; #orderByRole: boolean; #showLoadout: boolean = true; + #showSkill: boolean = true; #showAltitudeSlider: boolean = true; /* Controls */ @@ -45,6 +47,7 @@ export abstract class UnitSpawnMenu { #unitLabelDropdown: Dropdown; #unitCountDropdown: Dropdown; #unitLoadoutDropdown: Dropdown; + #unitSkillDropdown: Dropdown; #unitCountryDropdown: Dropdown; #unitLiveryDropdown: Dropdown; #unitSpawnAltitudeSlider: Slider; @@ -77,6 +80,7 @@ export abstract class UnitSpawnMenu { this.#unitRoleTypeDropdown = new Dropdown(null, (roleType: string) => this.#setUnitRoleType(roleType), undefined, "Role"); this.#unitLabelDropdown = new Dropdown(null, (name: string) => this.#setUnitName(name), undefined, "Type"); this.#unitLoadoutDropdown = new Dropdown(null, (loadout: string) => this.#setUnitLoadout(loadout), undefined, "Loadout"); + this.#unitSkillDropdown = new Dropdown(null, (skill: string) => this.#setUnitSkill(skill), undefined, "Skill"); this.#unitCountDropdown = new Dropdown(null, (count: string) => this.#setUnitCount(count), undefined, "Count"); this.#unitCountryDropdown = new Dropdown(null, () => { /* Custom button implementation */ }, undefined, "Country"); this.#unitLiveryDropdown = new Dropdown(null, (livery: string) => this.#setUnitLivery(livery), undefined, "Livery"); @@ -104,14 +108,14 @@ export abstract class UnitSpawnMenu { this.#advancedOptionsToggle = document.createElement("div"); this.#advancedOptionsToggle.classList.add("contextmenu-advanced-options-toggle"); this.#advancedOptionsText = document.createElement("div"); - this.#advancedOptionsText.innerText = "Faction / Liveries"; + this.#advancedOptionsText.innerText = "Faction / Liveries / Skill Level"; this.#advancedOptionsToggle.append(this.#advancedOptionsText); this.#advancedOptionsToggle.addEventListener("click", () => { this.#advancedOptionsToggle.classList.toggle("is-open"); this.#advancedOptionsDiv.classList.toggle("hide"); this.#container.dispatchEvent(new Event("resize")); }); - this.#advancedOptionsDiv.append(this.#unitCountryDropdown.getContainer(), this.#unitLiveryDropdown.getContainer()); + this.#advancedOptionsDiv.append(this.#unitCountryDropdown.getContainer(), this.#unitLiveryDropdown.getContainer(), this.#unitSkillDropdown.getContainer()); /* Create the unit info collapsible div */ this.#unitInfoDiv = document.createElement("div"); @@ -170,6 +174,7 @@ export abstract class UnitSpawnMenu { /* Hide all the other components */ this.#unitLoadoutDropdown.hide(); + this.#unitSkillDropdown.hide(); this.#unitSpawnAltitudeSlider.hide(); this.#unitLoadoutPreviewEl.classList.add("hide"); this.#advancedOptionsDiv.classList.add("hide"); @@ -229,6 +234,7 @@ export abstract class UnitSpawnMenu { /* Reset the spawn options */ this.spawnOptions.name = ""; this.spawnOptions.loadout = undefined; + this.spawnOptions.skill = "Excellent"; this.spawnOptions.liveryID = undefined; this.#computeSpawnPoints(); @@ -244,6 +250,10 @@ export abstract class UnitSpawnMenu { this.#unitLoadoutPreviewEl.classList.remove("hide"); } + if (this.#showSkill) { + this.#unitSkillDropdown.show(); + } + /* Show the advanced options and unit info sections */ this.#advancedOptionsText.classList.remove("hide"); this.#advancedOptionsToggle.classList.remove("hide"); @@ -261,6 +271,13 @@ export abstract class UnitSpawnMenu { this.#unitLoadoutDropdown.selectValue(0); } + if (!this.#unitSkillDropdown.isHidden()) { + const sortedOptions = ["Average", "Good", "High", "Excellent"]; + this.#unitSkillDropdown.setOptions(sortedOptions, null); + this.#unitSkillDropdown.selectValue(4); + } + + /* Get the unit data from the db */ var blueprint = this.#unitDatabase.getByName(this.spawnOptions.name); @@ -317,6 +334,10 @@ export abstract class UnitSpawnMenu { this.#container.dispatchEvent(new Event("resize")); }) + this.#container.addEventListener("unitSkillChanged", () => { + + }) + this.#container.addEventListener("unitCountChanged", () => { /* Recompute the spawn points */ this.#computeSpawnPoints(); @@ -372,6 +393,7 @@ export abstract class UnitSpawnMenu { this.#unitCountDivider.classList.add("hide"); this.#unitCountDropdown.hide(); this.#unitLoadoutDropdown.hide(); + this.#unitSkillDropdown.hide(); this.#unitSpawnAltitudeSlider.hide(); this.#unitLoadoutPreviewEl.classList.add("hide"); this.#advancedOptionsDiv.classList.add("hide"); @@ -488,6 +510,10 @@ export abstract class UnitSpawnMenu { return this.#unitLoadoutDropdown; } + getSkillDropdown() { + return this.#unitSkillDropdown; + } + getCountryDropdown() { return this.#unitCountDropdown; } @@ -508,6 +534,10 @@ export abstract class UnitSpawnMenu { this.#showLoadout = showLoadout; } + setShowSkill(showSkill: boolean) { + this.#showSkill = showSkill; + } + setShowAltitudeSlider(showAltitudeSlider: boolean) { this.#showAltitudeSlider = showAltitudeSlider; } @@ -530,6 +560,11 @@ export abstract class UnitSpawnMenu { this.#container.dispatchEvent(new Event("unitLoadoutChanged")); } + #setUnitSkill(skill: string) { + this.spawnOptions.skill = skill; + this.#container.dispatchEvent(new Event("unitSkillChanged")); + } + #setUnitCount(count: string) { this.spawnOptions.count = parseInt(count); this.#container.dispatchEvent(new Event("unitCountChanged")); @@ -542,7 +577,7 @@ export abstract class UnitSpawnMenu { #setUnitLivery(liveryName: string) { var liveries = this.#unitDatabase.getByName(this.spawnOptions.name)?.liveries; - if (liveryName === "Default") { + if (liveryName === "Default Livery") { this.spawnOptions.liveryID = ""; } else { @@ -558,7 +593,7 @@ export abstract class UnitSpawnMenu { #setUnitLiveryOptions() { if (this.spawnOptions.name !== "" && this.spawnOptions.country !== "") { var liveries = this.#unitDatabase.getLiveryNamesByName(this.spawnOptions.name); - var countryLiveries: string[] = ["Default"]; + var countryLiveries: string[] = ["Default Livery"]; liveries.forEach((livery: any) => { var nationLiveryCodes = this.#countryCodes[this.spawnOptions.country].liveryCodes; if (livery.countries === "All" || livery.countries.some((country: string) => { return nationLiveryCodes.includes(country) })) @@ -638,15 +673,16 @@ export class AircraftSpawnMenu extends UnitSpawnMenu { var unitTable: UnitSpawnTable = { unitType: spawnOptions.name, location: spawnOptions.latlng, - altitude: spawnOptions.altitude? spawnOptions.altitude: 0, - loadout: spawnOptions.loadout? spawnOptions.loadout.name: "", - liveryID: spawnOptions.liveryID? spawnOptions.liveryID: "" + altitude: spawnOptions.altitude ? spawnOptions.altitude : 0, + loadout: spawnOptions.loadout ? spawnOptions.loadout.name : "", + liveryID: spawnOptions.liveryID ? spawnOptions.liveryID : "", + skill: spawnOptions.skill ? spawnOptions.skill : "Excellent" // Default to "Excellent" if skill is not set }; var units = []; - for (let i = 1; i < unitsCount + 1; i++) { + for (let i = 1; i <= unitsCount; i++) { units.push(unitTable); } - + getApp().getUnitsManager().spawnUnits("Aircraft", units, getApp().getActiveCoalition(), false, spawnOptions.airbase ? spawnOptions.airbase.getName() : "", spawnOptions.country, (res: any) => { if (res.commandHash !== undefined) getApp().getMap().addTemporaryMarker(spawnOptions.latlng, spawnOptions.name, getApp().getActiveCoalition(), res.commandHash); @@ -655,6 +691,7 @@ export class AircraftSpawnMenu extends UnitSpawnMenu { this.getContainer().dispatchEvent(new Event("hide")); } } + } export class HelicopterSpawnMenu extends UnitSpawnMenu { @@ -679,7 +716,8 @@ export class HelicopterSpawnMenu extends UnitSpawnMenu { location: spawnOptions.latlng, altitude: spawnOptions.altitude? spawnOptions.altitude: 0, loadout: spawnOptions.loadout? spawnOptions.loadout.name: "", - liveryID: spawnOptions.liveryID? spawnOptions.liveryID: "" + liveryID: spawnOptions.liveryID? spawnOptions.liveryID: "", + skill: spawnOptions.skill ? spawnOptions.skill : "Excellent" // Default to "Excellent" if skill is not set }; var units = []; for (let i = 1; i < unitsCount + 1; i++) { @@ -718,13 +756,18 @@ export class GroundUnitSpawnMenu extends UnitSpawnMenu { var unitTable: UnitSpawnTable = { unitType: spawnOptions.name, location: spawnOptions.latlng, - liveryID: spawnOptions.liveryID? spawnOptions.liveryID: "" + liveryID: spawnOptions.liveryID? spawnOptions.liveryID: "", + skill: spawnOptions.skill ? spawnOptions.skill : "High" }; var units = []; + let initialLat = unitTable.location.lat; + let initialLng = unitTable.location.lng; + let rows = Math.floor(Math.sqrt(unitsCount)) for (let i = 0; i < unitsCount; i++) { + unitTable.location.lat = initialLat + i % rows * 0.0001; + unitTable.location.lng = initialLng + Math.floor(i / rows) * 0.0001; units.push(JSON.parse(JSON.stringify(unitTable))); - unitTable.location.lat += i > 0? 0.0001: 0; } getApp().getUnitsManager().spawnUnits("GroundUnit", units, getApp().getActiveCoalition(), false, spawnOptions.airbase ? spawnOptions.airbase.getName() : "", spawnOptions.country, (res: any) => { @@ -768,13 +811,18 @@ export class NavyUnitSpawnMenu extends UnitSpawnMenu { var unitTable: UnitSpawnTable = { unitType: spawnOptions.name, location: spawnOptions.latlng, - liveryID: spawnOptions.liveryID? spawnOptions.liveryID: "" + liveryID: spawnOptions.liveryID? spawnOptions.liveryID: "", + skill: spawnOptions.skill ? spawnOptions.skill : "High" }; var units = []; + let initialLat = unitTable.location.lat; + let initialLng = unitTable.location.lng; + let rows = Math.floor(Math.sqrt(unitsCount)) for (let i = 0; i < unitsCount; i++) { + unitTable.location.lat = initialLat + i % rows * 0.005; + unitTable.location.lng = initialLng + Math.floor(i / rows) * 0.005; units.push(JSON.parse(JSON.stringify(unitTable))); - unitTable.location.lat += i > 0? 0.0001: 0; } getApp().getUnitsManager().spawnUnits("NavyUnit", units, getApp().getActiveCoalition(), false, spawnOptions.airbase ? spawnOptions.airbase.getName() : "", spawnOptions.country, (res: any) => { diff --git a/client/src/dialog/dialog.ts b/frontend/website/src/dialog/dialog.ts similarity index 100% rename from client/src/dialog/dialog.ts rename to frontend/website/src/dialog/dialog.ts diff --git a/client/src/dom.d.ts b/frontend/website/src/dom.d.ts similarity index 100% rename from client/src/dom.d.ts rename to frontend/website/src/dom.d.ts diff --git a/client/src/index.ts b/frontend/website/src/index.ts similarity index 100% rename from client/src/index.ts rename to frontend/website/src/index.ts diff --git a/client/src/interfaces.ts b/frontend/website/src/interfaces.ts similarity index 99% rename from client/src/interfaces.ts rename to frontend/website/src/interfaces.ts index 4461a17f..ef60bd07 100644 --- a/client/src/interfaces.ts +++ b/frontend/website/src/interfaces.ts @@ -75,6 +75,7 @@ export interface UnitSpawnTable { location: LatLng, altitude?: number, loadout?: string, + skill: string, liveryID: string } @@ -238,6 +239,7 @@ export interface UnitSpawnOptions { coalition: string; count: number; country: string; + skill: string; loadout: LoadoutBlueprint | undefined; airbase: Airbase | undefined; liveryID: string | undefined; diff --git a/client/src/map/boxselect.ts b/frontend/website/src/map/boxselect.ts similarity index 100% rename from client/src/map/boxselect.ts rename to frontend/website/src/map/boxselect.ts diff --git a/client/src/map/clickableminimap.ts b/frontend/website/src/map/clickableminimap.ts similarity index 100% rename from client/src/map/clickableminimap.ts rename to frontend/website/src/map/clickableminimap.ts diff --git a/client/src/map/coalitionarea/coalitionarea.ts b/frontend/website/src/map/coalitionarea/coalitionarea.ts similarity index 100% rename from client/src/map/coalitionarea/coalitionarea.ts rename to frontend/website/src/map/coalitionarea/coalitionarea.ts diff --git a/client/src/map/coalitionarea/coalitionareahandle.ts b/frontend/website/src/map/coalitionarea/coalitionareahandle.ts similarity index 100% rename from client/src/map/coalitionarea/coalitionareahandle.ts rename to frontend/website/src/map/coalitionarea/coalitionareahandle.ts diff --git a/client/src/map/coalitionarea/coalitionareamiddlehandle.ts b/frontend/website/src/map/coalitionarea/coalitionareamiddlehandle.ts similarity index 100% rename from client/src/map/coalitionarea/coalitionareamiddlehandle.ts rename to frontend/website/src/map/coalitionarea/coalitionareamiddlehandle.ts diff --git a/client/src/map/coalitionarea/drawingcursor.ts b/frontend/website/src/map/coalitionarea/drawingcursor.ts similarity index 100% rename from client/src/map/coalitionarea/drawingcursor.ts rename to frontend/website/src/map/coalitionarea/drawingcursor.ts diff --git a/frontend/website/src/map/dcslayer.ts b/frontend/website/src/map/dcslayer.ts new file mode 100644 index 00000000..6b59b48f --- /dev/null +++ b/frontend/website/src/map/dcslayer.ts @@ -0,0 +1,49 @@ +import * as L from "leaflet" + +export class DCSLayer extends L.TileLayer { + createTile(coords: L.Coords, done: L.DoneCallback) { + let newDone = (error?: Error, tile?: HTMLElement) => { + if (error === null && tile !== undefined && !tile.classList.contains('filtered')) { + // Create a canvas and set its width and height. + var canvas = document.createElement('canvas'); + canvas.setAttribute('width', '256px'); + canvas.setAttribute('height', '256px'); + + // Get the canvas drawing context, and draw the image to it. + var context = canvas.getContext('2d'); + if (context) { + context.drawImage(tile as CanvasImageSource, 0, 0, canvas.width, canvas.height); + + // Get the canvas image data. + var imageData = context.getImageData(0, 0, canvas.width, canvas.height); + + // Create a function for preserving a specified colour. + var makeTransparent = function(imageData: ImageData, color: {r: number, g: number, b: number}) { + // Get the pixel data from the source. + var data = imageData.data; + // Iterate through all the pixels. + for (var i = 0; i < data.length; i += 4) { + // Check if the current pixel should have preserved transparency. This simply compares whether the color we passed in is equivalent to our pixel data. + var convert = data[i] > color.r - 5 && data[i] < color.r + 5 + && data[i + 1] > color.g - 5 && data[i + 1] < color.g + 5 + && data[i + 2] > color.b - 5 && data[i + 2] < color.b + 5; + + // Either preserve the initial transparency or set the transparency to 0. + data[i + 3] = convert ? 100: data[i + 3]; + } + return imageData; + }; + + // Get the new pixel data and set it to the canvas context. + var newData = makeTransparent(imageData, {r: 26, g: 109, b: 127}); + context.putImageData(newData, 0, 0); + (tile as HTMLImageElement).src = canvas.toDataURL(); + tile.classList.add('filtered'); + } + } else { + return done(error, tile); + } + } + return super.createTile(coords, newDone); + } +} \ No newline at end of file diff --git a/client/src/map/map.ts b/frontend/website/src/map/map.ts similarity index 70% rename from client/src/map/map.ts rename to frontend/website/src/map/map.ts index be47a116..d77396ad 100644 --- a/client/src/map/map.ts +++ b/frontend/website/src/map/map.ts @@ -7,12 +7,12 @@ import { AirbaseContextMenu } from "../contextmenus/airbasecontextmenu"; import { Dropdown } from "../controls/dropdown"; import { Airbase } from "../mission/airbase"; import { Unit } from "../unit/unit"; -import { bearing, createCheckboxOption, polyContains } from "../other/utils"; +import { bearing, createCheckboxOption, createSliderInputOption, createTextInputOption, deg2rad, getGroundElevation, polyContains } from "../other/utils"; import { DestinationPreviewMarker } from "./markers/destinationpreviewmarker"; import { TemporaryUnitMarker } from "./markers/temporaryunitmarker"; import { ClickableMiniMap } from "./clickableminimap"; import { SVGInjector } from '@tanem/svg-injector' -import { mapLayers, mapBounds, minimapBoundaries, IDLE, COALITIONAREA_DRAW_POLYGON, MOVE_UNIT, SHOW_UNIT_CONTACTS, HIDE_GROUP_MEMBERS, SHOW_UNIT_PATHS, SHOW_UNIT_TARGETS, SHOW_UNIT_LABELS, SHOW_UNITS_ENGAGEMENT_RINGS, SHOW_UNITS_ACQUISITION_RINGS, HIDE_UNITS_SHORT_RANGE_RINGS, FILL_SELECTED_RING, MAP_MARKER_CONTROLS } from "../constants/constants"; +import { defaultMapLayers, mapBounds, minimapBoundaries, IDLE, COALITIONAREA_DRAW_POLYGON, MOVE_UNIT, SHOW_UNIT_CONTACTS, HIDE_GROUP_MEMBERS, SHOW_UNIT_PATHS, SHOW_UNIT_TARGETS, SHOW_UNIT_LABELS, SHOW_UNITS_ENGAGEMENT_RINGS, SHOW_UNITS_ACQUISITION_RINGS, HIDE_UNITS_SHORT_RANGE_RINGS, FILL_SELECTED_RING, MAP_MARKER_CONTROLS, DCS_LINK_PORT, DCS_LINK_RATIO, defaultMapMirrors } from "../constants/constants"; import { CoalitionArea } from "./coalitionarea/coalitionarea"; import { CoalitionAreaContextMenu } from "../contextmenus/coalitionareacontextmenu"; import { DrawingCursor } from "./coalitionarea/drawingcursor"; @@ -21,6 +21,7 @@ import { GestureHandling } from "leaflet-gesture-handling"; import { TouchBoxSelect } from "./touchboxselect"; import { DestinationPreviewHandle } from "./markers/destinationpreviewHandle"; import { ContextActionSet } from "../unit/contextactionset"; +import { DCSLayer } from "./dcslayer"; var hasTouchScreen = false; //if ("maxTouchPoints" in navigator) @@ -34,10 +35,11 @@ else L.Map.addInitHook("addHandler", "gestureHandling", GestureHandling); // TODO would be nice to convert to ts - yes -require("../../public/javascripts/leaflet.nauticscale.js") -require("../../public/javascripts/L.Path.Drag.js") +require("../../node_modules/leaflet.nauticscale/dist/leaflet.nauticscale.js") +require("../../node_modules/leaflet-path-drag/dist/index.js") export type MapMarkerVisibilityControl = { + "category"?: string; "image": string; "isProtected"?: boolean, "name": string, @@ -45,11 +47,11 @@ export type MapMarkerVisibilityControl = { "toggles": string[], "tooltip": string } - + export class Map extends L.Map { #ID: string; #state: string; - #layer: L.TileLayer | null = null; + #layer: L.TileLayer | L.LayerGroup | null = null; #preventLeftClick: boolean = false; #leftClickTimer: number = 0; #deafultPanDelta: number = 100; @@ -69,6 +71,11 @@ export class Map extends L.Map { #selecting: boolean = false; #isZooming: boolean = false; #previousZoom: number = 0; + #slaveDCSCamera: boolean = false; + #slaveDCSCameraAvailable: boolean = false; + #cameraControlTimer: number = 0; + #cameraControlPort: number = 3003; + #cameraControlMode: string = 'map'; #destinationGroupRotation: number = 0; #computeDestinationRotation: boolean = false; @@ -89,11 +96,17 @@ export class Map extends L.Map { #coalitionAreaContextMenu: CoalitionAreaContextMenu = new CoalitionAreaContextMenu("coalition-area-contextmenu"); #mapSourceDropdown: Dropdown; + #mapLayers: any = defaultMapLayers; + #mapMirrors: any = defaultMapMirrors; #mapMarkerVisibilityControls: MapMarkerVisibilityControl[] = MAP_MARKER_CONTROLS; #mapVisibilityOptionsDropdown: Dropdown; #optionButtons: { [key: string]: HTMLButtonElement[] } = {} - #visibilityOptions: { [key: string]: boolean } = {} + #visibilityOptions: { [key: string]: boolean | string | number } = {} #hiddenTypes: string[] = []; + #layerName: string = ""; + #cameraOptionsXmlHttp: XMLHttpRequest | null = null; + #bradcastPositionXmlHttp: XMLHttpRequest | null = null; + #cameraZoomRatio: number = 1.0; /** * @@ -119,10 +132,8 @@ export class Map extends L.Map { this.#ID = ID; - this.setLayer(Object.keys(mapLayers)[0]); - /* Minimap */ - var minimapLayer = new L.TileLayer(mapLayers[Object.keys(mapLayers)[0] as keyof typeof mapLayers].urlTemplate, { minZoom: 0, maxZoom: 13 }); + var minimapLayer = new L.TileLayer("https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}", { minZoom: 0, maxZoom: 13 }); this.#miniMapLayerGroup = new L.LayerGroup([minimapLayer]); this.#miniMapPolyline = new L.Polyline([], { color: '#202831' }); this.#miniMapPolyline.addTo(this.#miniMapLayerGroup); @@ -132,7 +143,8 @@ export class Map extends L.Map { //L.control.scalenautic({ position: "topright", maxWidth: 300, nautic: true, metric: true, imperial: false }).addTo(this); /* Map source dropdown */ - this.#mapSourceDropdown = new Dropdown("map-type", (layerName: string) => this.setLayer(layerName), this.getLayers()); + this.#mapSourceDropdown = new Dropdown("map-type", (layerName: string) => this.setLayer(layerName)); + this.#mapSourceDropdown.setOptions(this.getLayers(), null); /* Visibility options dropdown */ this.#mapVisibilityOptionsDropdown = new Dropdown("map-visibility-options", (value: string) => { }); @@ -156,6 +168,7 @@ export class Map extends L.Map { this.on('drag', (e: any) => this.#onMouseMove(e)); this.on('keydown', (e: any) => this.#onKeyDown(e)); this.on('keyup', (e: any) => this.#onKeyUp(e)); + this.on('move', (e: any) => { if (this.#slaveDCSCamera) this.#broadcastPosition() }); /* Event listeners */ document.addEventListener("toggleCoalitionVisibility", (ev: CustomEventInit) => { @@ -199,8 +212,68 @@ export class Map extends L.Map { document.addEventListener("mapOptionsChanged", () => { this.getContainer().toggleAttribute("data-hide-labels", !this.getVisibilityOptions()[SHOW_UNIT_LABELS]); + this.#cameraControlPort = this.getVisibilityOptions()[DCS_LINK_PORT] as number; + this.#cameraZoomRatio = 50 / (20 + (this.getVisibilityOptions()[DCS_LINK_RATIO] as number)); + + if (this.#slaveDCSCamera) { + this.#broadcastPosition(); + window.setTimeout(() => { + this.#broadcastPosition(); + }, 500); // DCS does not always apply the altitude correctly at the first set when changing map type + } }); + document.addEventListener("configLoaded", () => { + let config = getApp().getConfig(); + let layerSet = false; + + /* First load the map mirrors */ + if (config.mapMirrors) { + let mapMirrors = config.mapMirrors; + this.#mapMirrors = { + ...this.#mapMirrors, + ...mapMirrors + } + this.setLayer(Object.keys(mapMirrors)[0]); + } + + /* Set the options, and if at least one mirror is available, select the first */ + this.#mapSourceDropdown.setOptions(Object.keys(this.#mapMirrors), null); + if (Object.keys(this.#mapMirrors).length > 0) { + this.#mapSourceDropdown.selectValue(0); + this.setLayer(Object.keys(this.#mapMirrors)[0]); + layerSet = true; // Needed because this is async + } + + /* Then load the map layers */ + if (config.mapLayers) { + let mapLayers = config.mapLayers; + this.#mapLayers = { + ...this.#mapLayers, + ...mapLayers + } + } + + /* Append this options, and if no mirror was selected, select the first on (if available). Mirrors have the precedence */ + this.#mapSourceDropdown.setOptions(Object.keys(this.#mapMirrors).concat(Object.keys(this.#mapLayers)), null); + if (!layerSet && Object.keys(this.#mapLayers).length > 0) { + this.#mapSourceDropdown.selectValue(0); + this.setLayer(Object.keys(this.#mapLayers)[0]); + } + }) + + document.addEventListener("toggleCameraLinkStatus", () => { + // if (this.#slaveDCSCameraAvailable) { // Commented to experiment with usability + this.setSlaveDCSCamera(!this.#slaveDCSCamera); + // } + }) + + document.addEventListener("slewCameraToPosition", () => { + // if (this.#slaveDCSCameraAvailable) { // Commented to experiment with usability + this.#broadcastPosition(); + // } + }) + /* Pan interval */ this.#panInterval = window.setInterval(() => { if (this.#panUp || this.#panDown || this.#panRight || this.#panLeft) @@ -208,10 +281,20 @@ export class Map extends L.Map { ((this.#panUp ? -1 : 0) + (this.#panDown ? 1 : 0)) * this.#deafultPanDelta * (this.#shiftKey ? 3 : 1))); }, 20); + /* Periodically check if the camera control endpoint is available */ + this.#cameraControlTimer = window.setInterval(() => { + this.#checkCameraPort(); + }, 1000) + /* Option buttons */ this.#createUnitMarkerControlButtons(); /* Create the checkboxes to select the advanced visibility options */ + this.addVisibilityOption(DCS_LINK_PORT, 3003, { min: 1024, max: 65535 }); + this.addVisibilityOption(DCS_LINK_RATIO, 50, { min: 0, max: 100, slider: true }); + + this.#mapVisibilityOptionsDropdown.addHorizontalDivider(); + this.addVisibilityOption(SHOW_UNIT_CONTACTS, false); this.addVisibilityOption(HIDE_GROUP_MEMBERS, true); this.addVisibilityOption(SHOW_UNIT_PATHS, true); @@ -223,30 +306,71 @@ export class Map extends L.Map { /* this.addVisibilityOption(FILL_SELECTED_RING, false); Removed since currently broken: TODO fix!*/ } - addVisibilityOption(option: string, defaultValue: boolean) { + addVisibilityOption(option: string, defaultValue: boolean | number | string, options?: { [key: string]: any }) { this.#visibilityOptions[option] = defaultValue; - this.#mapVisibilityOptionsDropdown.addOptionElement(createCheckboxOption(option, option, defaultValue, (ev: any) => { this.#setVisibilityOption(option, ev); })); + if (typeof defaultValue === 'boolean') { + this.#mapVisibilityOptionsDropdown.addOptionElement(createCheckboxOption(option, option, defaultValue as boolean, (ev: any) => { this.#setVisibilityOption(option, ev); }, options)); + } else if (typeof defaultValue === 'number') { + if (options !== undefined && options?.slider === true) + this.#mapVisibilityOptionsDropdown.addOptionElement(createSliderInputOption(option, option, defaultValue, (ev: any) => { this.#setVisibilityOption(option, ev); }, options)); + else + this.#mapVisibilityOptionsDropdown.addOptionElement(createTextInputOption(option, option, defaultValue.toString(), 'number', (ev: any) => { this.#setVisibilityOption(option, ev); }, options)); + } else { + this.#mapVisibilityOptionsDropdown.addOptionElement(createTextInputOption(option, option, defaultValue, 'text', (ev: any) => { this.#setVisibilityOption(option, ev); }, options)); + } } setLayer(layerName: string) { - if (this.#layer != null) - this.removeLayer(this.#layer) + if (this.#layer) + this.removeLayer(this.#layer); - if (layerName in mapLayers) { - const layerData = mapLayers[layerName as keyof typeof mapLayers]; - var options: L.TileLayerOptions = { - attribution: layerData.attribution, - minZoom: layerData.minZoom, - maxZoom: layerData.maxZoom - }; - this.#layer = new L.TileLayer(layerData.urlTemplate, options); + let theatre = getApp().getMissionManager()?.getTheatre() ?? "Nevada"; + + /* Normal or custom layers are handled here */ + if (layerName in this.#mapLayers) { + const layerData = this.#mapLayers[layerName]; + if (layerData instanceof Array) { + let layers = layerData.map((layer: any) => { + return new L.TileLayer(layer.urlTemplate.replace("{theatre}", theatre.toLowerCase()), layer); + }) + this.#layer = new L.LayerGroup(layers); + this.#layer?.addTo(this); + } else { + this.#layer = new L.TileLayer(layerData.urlTemplate, layerData); + this.#layer?.addTo(this); + } + /* mirrored layers are handled here */ + } else if (Object.keys(this.#mapMirrors).includes(layerName) ) { + let layers: L.TileLayer[] = []; + + /* Load the configuration file */ + const mirror = this.#mapMirrors[layerName as any]; + const request = new Request(mirror + "/config.json"); + fetch(request).then((response) => { + if (response.status === 200) { + return response.json(); + } else { + return {}; + } + }).then((res: any) => { + if ("alt-" + theatre.toLowerCase() in res) { + let template = `${mirror}/alt-${theatre.toLowerCase()}/{z}/{x}/{y}.png`; + layers.push(...res["alt-" + theatre.toLowerCase()].map((layerConfig: any) => { + return new L.TileLayer(template, {...layerConfig, crossOrigin: ""}); + })); + } + this.#layer = new L.LayerGroup(layers); + this.#layer?.addTo(this); + }).catch(() => { + this.#layer = new L.LayerGroup(layers); + this.#layer?.addTo(this); + }) } - - this.#layer?.addTo(this); + this.#layerName = layerName; } getLayers() { - return Object.keys(mapLayers); + return Object.keys(this.#mapLayers); } /* State machine */ @@ -422,6 +546,8 @@ export class Map extends L.Map { const boundaries = this.#getMinimapBoundaries(); this.#miniMapPolyline.setLatLngs(boundaries[theatre as keyof typeof boundaries]); + + this.setLayer(this.#layerName); } getMiniMapLayerGroup() { @@ -521,6 +647,46 @@ export class Map extends L.Map { return this.#mapMarkerVisibilityControls; } + setSlaveDCSCamera(newSlaveDCSCamera: boolean) { + this.#slaveDCSCamera = newSlaveDCSCamera; + let button = document.getElementById("camera-link-control"); + button?.classList.toggle("off", !newSlaveDCSCamera); + if (this.#slaveDCSCamera) { + this.#broadcastPosition(); + window.setTimeout(() => { + this.#broadcastPosition(); + }, 500); // DCS does not always apply the altitude correctly at the first set when changing map type + } + } + + setCameraControlMode(newCameraControlMode: string) { + this.#cameraControlMode = newCameraControlMode; + if (this.#slaveDCSCamera) { + this.#broadcastPosition(); + window.setTimeout(() => { + this.#broadcastPosition(); + }, 500); // DCS does not always apply the altitude correctly at the first set when changing map type + } + } + + increaseCameraZoom() { + const slider = document.querySelector(`label[title="${DCS_LINK_RATIO}"] input`); + if (slider instanceof HTMLInputElement) { + slider.value = String(Math.min(Number(slider.max), Number(slider.value) + 10)); + slider.dispatchEvent(new Event('input')); + slider.dispatchEvent(new Event('mouseup')); + } + } + + decreaseCameraZoom() { + const slider = document.querySelector(`label[title="${DCS_LINK_RATIO}"] input`); + if (slider instanceof HTMLInputElement) { + slider.value = String(Math.max(Number(slider.min), Number(slider.value) - 10)); + slider.dispatchEvent(new Event('input')); + slider.dispatchEvent(new Event('mouseup')); + } + } + /* Event handlers */ #onClick(e: any) { if (!this.#preventLeftClick) { @@ -703,6 +869,31 @@ export class Map extends L.Map { this.#isZooming = false; } + #broadcastPosition() { + if (this.#bradcastPositionXmlHttp?.readyState !== 4 && this.#bradcastPositionXmlHttp !== null) + return + + getGroundElevation(this.getCenter(), (response: string) => { + var groundElevation: number | null = null; + try { + groundElevation = parseFloat(response); + this.#bradcastPositionXmlHttp = new XMLHttpRequest(); + /* Using 127.0.0.1 instead of localhost because the LuaSocket version used in DCS only listens to IPv4. This avoids the lag caused by the + browser if it first tries to send the request on the IPv6 address for localhost */ + this.#bradcastPositionXmlHttp.open("POST", `http://127.0.0.1:${this.#cameraControlPort}`); + + const C = 40075016.686; + let mpp = C * Math.cos(deg2rad(this.getCenter().lat)) / Math.pow(2, this.getZoom() + 8); + let d = mpp * 1920; + let alt = d / 2 * 1 / Math.tan(deg2rad(40)) * this.#cameraZoomRatio; + alt = Math.min(alt, 50000); + this.#bradcastPositionXmlHttp.send(JSON.stringify({ lat: this.getCenter().lat, lng: this.getCenter().lng, alt: alt + groundElevation, mode: this.#cameraControlMode })); + } catch { + console.warn("broadcastPosition: could not retrieve ground elevation") + } + }); + } + /* */ #panToUnit(unit: Unit) { var unitPosition = new L.LatLng(unit.getPosition().lat, unit.getPosition().lng); @@ -869,8 +1060,54 @@ export class Map extends L.Map { } #setVisibilityOption(option: string, ev: any) { - this.#visibilityOptions[option] = ev.currentTarget.checked; + if (typeof this.#visibilityOptions[option] === 'boolean') + this.#visibilityOptions[option] = ev.currentTarget.checked; + else if (typeof this.#visibilityOptions[option] === 'number') + this.#visibilityOptions[option] = Number(ev.currentTarget.value); + else + this.#visibilityOptions[option] = ev.currentTarget.value; document.dispatchEvent(new CustomEvent("mapOptionsChanged")); } + + #setSlaveDCSCameraAvailable(newSlaveDCSCameraAvailable: boolean) { + this.#slaveDCSCameraAvailable = newSlaveDCSCameraAvailable; + let linkButton = document.getElementById("camera-link-control"); + if (linkButton) { + if (!newSlaveDCSCameraAvailable) { + //this.setSlaveDCSCamera(false); // Commented to experiment with usability + linkButton.classList.add("red"); + linkButton.title = "Camera link to DCS is not available"; + } else { + linkButton.classList.remove("red"); + linkButton.title = "Link/Unlink DCS camera with Olympus position"; + } + } + } + + /* Check if the camera control plugin is available. Right now this will only change the color of the button, no changes in functionality */ + #checkCameraPort(){ + if (this.#cameraOptionsXmlHttp?.readyState !== 4) + this.#cameraOptionsXmlHttp?.abort() + + this.#cameraOptionsXmlHttp = new XMLHttpRequest(); + + /* Using 127.0.0.1 instead of localhost because the LuaSocket version used in DCS only listens to IPv4. This avoids the lag caused by the + browser if it first tries to send the request on the IPv6 address for localhost */ + this.#cameraOptionsXmlHttp.open("OPTIONS", `http://127.0.0.1:${this.#cameraControlPort}`); + this.#cameraOptionsXmlHttp.onload = (res: any) => { + if (this.#cameraOptionsXmlHttp !== null && this.#cameraOptionsXmlHttp.status == 204) + this.#setSlaveDCSCameraAvailable(true); + else + this.#setSlaveDCSCameraAvailable(false); + }; + this.#cameraOptionsXmlHttp.onerror = (res: any) => { + this.#setSlaveDCSCameraAvailable(false); + } + this.#cameraOptionsXmlHttp.ontimeout = (res: any) => { + this.#setSlaveDCSCameraAvailable(false); + } + this.#cameraOptionsXmlHttp.timeout = 500; + this.#cameraOptionsXmlHttp.send(""); + } } diff --git a/client/src/map/markers/custommarker.ts b/frontend/website/src/map/markers/custommarker.ts similarity index 100% rename from client/src/map/markers/custommarker.ts rename to frontend/website/src/map/markers/custommarker.ts diff --git a/client/src/map/markers/destinationpreviewHandle.ts b/frontend/website/src/map/markers/destinationpreviewHandle.ts similarity index 100% rename from client/src/map/markers/destinationpreviewHandle.ts rename to frontend/website/src/map/markers/destinationpreviewHandle.ts diff --git a/client/src/map/markers/destinationpreviewmarker.ts b/frontend/website/src/map/markers/destinationpreviewmarker.ts similarity index 100% rename from client/src/map/markers/destinationpreviewmarker.ts rename to frontend/website/src/map/markers/destinationpreviewmarker.ts diff --git a/client/src/map/markers/smokemarker.ts b/frontend/website/src/map/markers/smokemarker.ts similarity index 100% rename from client/src/map/markers/smokemarker.ts rename to frontend/website/src/map/markers/smokemarker.ts diff --git a/client/src/map/markers/targetmarker.ts b/frontend/website/src/map/markers/targetmarker.ts similarity index 100% rename from client/src/map/markers/targetmarker.ts rename to frontend/website/src/map/markers/targetmarker.ts diff --git a/client/src/map/markers/temporaryunitmarker.ts b/frontend/website/src/map/markers/temporaryunitmarker.ts similarity index 100% rename from client/src/map/markers/temporaryunitmarker.ts rename to frontend/website/src/map/markers/temporaryunitmarker.ts diff --git a/client/src/map/rangecircle.ts b/frontend/website/src/map/rangecircle.ts similarity index 100% rename from client/src/map/rangecircle.ts rename to frontend/website/src/map/rangecircle.ts diff --git a/client/src/map/touchboxselect.ts b/frontend/website/src/map/touchboxselect.ts similarity index 100% rename from client/src/map/touchboxselect.ts rename to frontend/website/src/map/touchboxselect.ts diff --git a/client/src/mission/airbase.ts b/frontend/website/src/mission/airbase.ts similarity index 100% rename from client/src/mission/airbase.ts rename to frontend/website/src/mission/airbase.ts diff --git a/client/src/mission/bullseye.ts b/frontend/website/src/mission/bullseye.ts similarity index 100% rename from client/src/mission/bullseye.ts rename to frontend/website/src/mission/bullseye.ts diff --git a/client/src/mission/missionmanager.ts b/frontend/website/src/mission/missionmanager.ts similarity index 88% rename from client/src/mission/missionmanager.ts rename to frontend/website/src/mission/missionmanager.ts index 139f35ae..c37fac24 100644 --- a/client/src/mission/missionmanager.ts +++ b/frontend/website/src/mission/missionmanager.ts @@ -2,7 +2,7 @@ import { LatLng } from "leaflet"; import { getApp } from ".."; import { Airbase } from "./airbase"; import { Bullseye } from "./bullseye"; -import { BLUE_COMMANDER, GAME_MASTER, NONE, RED_COMMANDER } from "../constants/constants"; +import { BLUE_COMMANDER, ERAS, GAME_MASTER, NONE, RED_COMMANDER } from "../constants/constants"; import { Dropdown } from "../controls/dropdown"; import { groundUnitDatabase } from "../unit/databases/groundunitdatabase"; import { createCheckboxOption, getCheckboxOptions } from "../other/utils"; @@ -26,13 +26,16 @@ export class MissionManager { #coalitions: {red: string[], blue: string[]} = {red: [], blue: []}; constructor() { - document.addEventListener("showCommandModeDialog", () => this.showCommandModeDialog()); document.addEventListener("applycommandModeOptions", () => this.#applycommandModeOptions()); + document.addEventListener("showCommandModeDialog", () => this.showCommandModeDialog()); + document.addEventListener("toggleSpawnRestrictions", (ev:CustomEventInit) => { + this.#toggleSpawnRestrictions(ev.detail._element.checked) + }); /* command-mode settings dialog */ this.#commandModeDialog = document.querySelector("#command-mode-settings-dialog") as HTMLElement; - this.#commandModeErasDropdown = new Dropdown("command-mode-era-options", () => {}); + } /** Update location of bullseyes @@ -115,8 +118,8 @@ export class MissionManager { } commandModePhaseEl.classList.toggle("setup-phase", this.#remainingSetupTime > 0 && this.getCommandModeOptions().restrictSpawns); - commandModePhaseEl.classList.toggle("game-commenced", this.#remainingSetupTime <= 0 || !this.getCommandModeOptions().restrictSpawns); - commandModePhaseEl.classList.toggle("no-restrictions", !this.getCommandModeOptions().restrictSpawns); + //commandModePhaseEl.classList.toggle("game-commenced", this.#remainingSetupTime <= 0 || !this.getCommandModeOptions().restrictSpawns); + //commandModePhaseEl.classList.toggle("no-restrictions", !this.getCommandModeOptions().restrictSpawns); } } } @@ -177,7 +180,6 @@ export class MissionManager { return this.#theatre; } - getAvailableSpawnPoints() { if (this.getCommandModeOptions().commandMode === GAME_MASTER) return Infinity; @@ -211,12 +213,18 @@ export class MissionManager { } showCommandModeDialog() { + const options = this.getCommandModeOptions() + const { restrictSpawns, restrictToCoalition, setupTime } = options; + this.#toggleSpawnRestrictions(restrictSpawns); + /* Create the checkboxes to select the unit eras */ - var eras = aircraftDatabase.getEras().concat(helicopterDatabase.getEras()).concat(groundUnitDatabase.getEras()).concat(navyUnitDatabase.getEras()); - eras = eras.filter((item: string, index: number) => eras.indexOf(item) === index).sort(); - this.#commandModeErasDropdown.setOptionsElements(eras.map((era: string) => { - return createCheckboxOption(era, `Enable ${era} units spawns`, this.getCommandModeOptions().eras.includes(era)); - })); + this.#commandModeErasDropdown.setOptionsElements( + ERAS.sort((eraA, eraB) => { + return ( eraA.chronologicalOrder > eraB.chronologicalOrder ) ? 1 : -1; + }).map((era) => { + return createCheckboxOption(era.name, `Enable ${era} units spawns`, this.getCommandModeOptions().eras.includes(era.name)); + }) + ); this.#commandModeDialog.classList.remove("hide"); @@ -226,11 +234,11 @@ export class MissionManager { const redSpawnPointsInput = this.#commandModeDialog.querySelector("#red-spawn-points")?.querySelector("input") as HTMLInputElement; const setupTimeInput = this.#commandModeDialog.querySelector("#setup-time")?.querySelector("input") as HTMLInputElement; - restrictSpawnsCheckbox.checked = this.getCommandModeOptions().restrictSpawns; - restrictToCoalitionCheckbox.checked = this.getCommandModeOptions().restrictToCoalition; - blueSpawnPointsInput.value = String(this.getCommandModeOptions().spawnPoints.blue); - redSpawnPointsInput.value = String(this.getCommandModeOptions().spawnPoints.red); - setupTimeInput.value = String(Math.floor(this.getCommandModeOptions().setupTime / 60.0)); + restrictSpawnsCheckbox.checked = restrictSpawns; + restrictToCoalitionCheckbox.checked = restrictToCoalition; + blueSpawnPointsInput.value = String(options.spawnPoints.blue); + redSpawnPointsInput.value = String(options.spawnPoints.red); + setupTimeInput.value = String(Math.floor(setupTime / 60.0)); } #applycommandModeOptions() { @@ -309,4 +317,10 @@ export class MissionManager { }; xhr.send(); } + + #toggleSpawnRestrictions(restrictionsEnabled:boolean) { + this.#commandModeDialog.querySelectorAll("input, label, .ol-select").forEach( el => { + if (!el.closest("#restrict-spawns")) el.toggleAttribute("disabled", !restrictionsEnabled); + }); + } } \ No newline at end of file diff --git a/client/src/olympusapp.ts b/frontend/website/src/olympusapp.ts similarity index 93% rename from client/src/olympusapp.ts rename to frontend/website/src/olympusapp.ts index aa1d9d7e..cb728812 100644 --- a/client/src/olympusapp.ts +++ b/frontend/website/src/olympusapp.ts @@ -27,13 +27,13 @@ import { navyUnitDatabase } from "./unit/databases/navyunitdatabase"; import { UnitListPanel } from "./panels/unitlistpanel"; import { ContextManager } from "./context/contextmanager"; import { Context } from "./context/context"; - var VERSION = "{{OLYMPUS_VERSION_NUMBER}}"; export class OlympusApp { /* Global data */ #activeCoalition: string = "blue"; #latestVersion: string|undefined = undefined; + #config: any = {}; /* Main leaflet map, extended by custom methods */ #map: Map | null = null; @@ -252,6 +252,19 @@ export class OlympusApp { latestVersionSpan.classList.toggle("new-version", this.#latestVersion !== VERSION); } }) + + /* Load the config file from the server */ + const configRequest = new Request(location.href + "resources/config"); + fetch(configRequest).then((response) => { + if (response.status === 200) { + return response.json(); + } else { + throw new Error("Error retrieving config file"); + } + }).then((res) => { + this.#config = res; + document.dispatchEvent(new CustomEvent("configLoaded")); + }) } #setupEvents() { @@ -355,6 +368,24 @@ export class OlympusApp { "context": "olympus", "ctrlKey": false, "shiftKey": false + }).addKeyboardShortcut("increaseCameraZoom", { + "altKey": true, + "callback": () => { + this.getMap().increaseCameraZoom(); + }, + "code": "Equal", + "context": "olympus", + "ctrlKey": false, + "shiftKey": false + }).addKeyboardShortcut("decreaseCameraZoom", { + "altKey": true, + "callback": () => { + this.getMap().decreaseCameraZoom(); + }, + "code": "Minus", + "context": "olympus", + "ctrlKey": false, + "shiftKey": false }); ["KeyW", "KeyA", "KeyS", "KeyD", "ArrowLeft", "ArrowRight", "ArrowUp", "ArrowDown"].forEach(code => { @@ -447,4 +478,8 @@ export class OlympusApp { img.addEventListener("load", () => { SVGInjector(img); }); }) } + + getConfig() { + return this.#config; + } } \ No newline at end of file diff --git a/client/src/other/eventsmanager.ts b/frontend/website/src/other/eventsmanager.ts similarity index 100% rename from client/src/other/eventsmanager.ts rename to frontend/website/src/other/eventsmanager.ts diff --git a/client/src/other/manager.ts b/frontend/website/src/other/manager.ts similarity index 100% rename from client/src/other/manager.ts rename to frontend/website/src/other/manager.ts diff --git a/client/src/other/utils.ts b/frontend/website/src/other/utils.ts similarity index 66% rename from client/src/other/utils.ts rename to frontend/website/src/other/utils.ts index 74866674..6908f20f 100644 --- a/client/src/other/utils.ts +++ b/frontend/website/src/other/utils.ts @@ -5,13 +5,14 @@ import { aircraftDatabase } from "../unit/databases/aircraftdatabase"; import { helicopterDatabase } from "../unit/databases/helicopterdatabase"; import { groundUnitDatabase } from "../unit/databases/groundunitdatabase"; import { Buffer } from "buffer"; -import { ROEs, emissionsCountermeasures, reactionsToThreat, states } from "../constants/constants"; +import { GROUND_UNIT_AIR_DEFENCE_REGEX, ROEs, emissionsCountermeasures, reactionsToThreat, states } from "../constants/constants"; import { Dropdown } from "../controls/dropdown"; import { navyUnitDatabase } from "../unit/databases/navyunitdatabase"; import { DateAndTime, UnitBlueprint } from "../interfaces"; +import { Slider } from "../controls/slider"; // comment -const usng = require( "usng.js" ); +const usng = require("usng.js"); export function bearing(lat1: number, lon1: number, lat2: number, lon2: number) { const φ1 = deg2rad(lat1); // φ, λ in radians @@ -45,8 +46,8 @@ export function bearingAndDistanceToLatLng(lat: number, lon: number, brng: numbe const R = 6371e3; // metres const φ1 = deg2rad(lat); // φ, λ in radians const λ1 = deg2rad(lon); - const φ2 = Math.asin( Math.sin(φ1)*Math.cos(dist/R) + Math.cos(φ1)*Math.sin(dist/R)*Math.cos(brng) ); - const λ2 = λ1 + Math.atan2(Math.sin(brng)*Math.sin(dist/R)*Math.cos(φ1), Math.cos(dist/R)-Math.sin(φ1)*Math.sin(φ2)); + const φ2 = Math.asin(Math.sin(φ1) * Math.cos(dist / R) + Math.cos(φ1) * Math.sin(dist / R) * Math.cos(brng)); + const λ2 = λ1 + Math.atan2(Math.sin(brng) * Math.sin(dist / R) * Math.cos(φ1), Math.cos(dist / R) - Math.sin(φ1) * Math.sin(φ2)); return new LatLng(rad2deg(φ2), rad2deg(λ2)); } @@ -64,14 +65,14 @@ export function ConvertDDToDMS(D: number, lng: boolean) { return dir + zeroPad(deg, 2) + "°" + zeroPad(min, 2) + "'" + zeroPad(sec, 2) + "." + zeroPad(dec, 2) + "\""; } -export function dataPointMap( container:HTMLElement, data:any) { - Object.keys( data ).forEach( ( key ) => { - const val = "" + data[ key ]; // Ensure a string - container.querySelectorAll( `[data-point="${key}"]`).forEach( el => { +export function dataPointMap(container: HTMLElement, data: any) { + Object.keys(data).forEach((key) => { + const val = "" + data[key]; // Ensure a string + container.querySelectorAll(`[data-point="${key}"]`).forEach(el => { // We could probably have options here - if ( el instanceof HTMLInputElement ) { + if (el instanceof HTMLInputElement) { el.value = val; - } else if ( el instanceof HTMLElement ) { + } else if (el instanceof HTMLElement) { el.innerText = val; } }); @@ -89,19 +90,19 @@ export function rad2deg(rad: number) { } export function generateUUIDv4() { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); } -export function keyEventWasInInput( event:KeyboardEvent ) { +export function keyEventWasInInput(event: KeyboardEvent) { const target = event.target; - return ( target instanceof HTMLElement && ( [ "INPUT", "TEXTAREA" ].includes( target.nodeName ) ) ); + return (target instanceof HTMLElement && (["INPUT", "TEXTAREA"].includes(target.nodeName))); } export function reciprocalHeading(heading: number): number { - return heading > 180? heading - 180: heading + 180; + return heading > 180 ? heading - 180 : heading + 180; } /** @@ -113,7 +114,7 @@ export function reciprocalHeading(heading: number): number { * * */ export const zeroAppend = function (num: number, places: number, decimal: boolean = false) { - var string = decimal? num.toFixed(2): String(num); + var string = decimal ? num.toFixed(2) : String(num); while (string.length < places) { string = "0" + string; } @@ -181,22 +182,22 @@ export type MGRS = { zoneNumber: string } -export function latLngToMGRS( lat:number, lng:number, precision:number = 4 ): MGRS | false { +export function latLngToMGRS(lat: number, lng: number, precision: number = 4): MGRS | false { - if ( precision < 0 || precision > 6 ) { - console.error( "latLngToMGRS: precision must be a number >= 0 and <= 6. Given precision: " + precision ); + if (precision < 0 || precision > 6) { + console.error("latLngToMGRS: precision must be a number >= 0 and <= 6. Given precision: " + precision); return false; } - - const mgrs = new usng.Converter().LLtoMGRS( lat, lng, precision ); - const match = mgrs.match( new RegExp( `^(\\d{2})([A-Z])([A-Z])([A-Z])(\\d+)$` ) ); - const easting = match[5].substr(0,match[5].length/2); - const northing = match[5].substr(match[5].length/2); - let output:MGRS = { + const mgrs = new usng.Converter().LLtoMGRS(lat, lng, precision); + const match = mgrs.match(new RegExp(`^(\\d{2})([A-Z])([A-Z])([A-Z])(\\d+)$`)); + const easting = match[5].substr(0, match[5].length / 2); + const northing = match[5].substr(match[5].length / 2); + + let output: MGRS = { bandLetter: match[2], columnLetter: match[3], - groups: [ match[1] + match[2], match[3] + match[4], easting, northing ], + groups: [match[1] + match[2], match[3] + match[4], easting, northing], easting: easting, northing: northing, precision: precision, @@ -204,32 +205,32 @@ export function latLngToMGRS( lat:number, lng:number, precision:number = 4 ): MG string: match[0], zoneNumber: match[1] } - + return output; } -export function latLngToUTM( lat:number, lng:number ) { - return new usng.Converter().LLtoUTM( lat, lng ); +export function latLngToUTM(lat: number, lng: number) { + return new usng.Converter().LLtoUTM(lat, lng); } -export function latLngToMercator(lat: number, lng: number): {x: number, y: number} { +export function latLngToMercator(lat: number, lng: number): { x: number, y: number } { var rMajor = 6378137; //Equatorial Radius, WGS84 - var shift = Math.PI * rMajor; - var x = lng * shift / 180; - var y = Math.log(Math.tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180); + var shift = Math.PI * rMajor; + var x = lng * shift / 180; + var y = Math.log(Math.tan((90 + lat) * Math.PI / 360)) / (Math.PI / 180); y = y * shift / 180; - - return {x: x, y: y}; + + return { x: x, y: y }; } export function mercatorToLatLng(x: number, y: number) { var rMajor = 6378137; //Equatorial Radius, WGS84 - var shift = Math.PI * rMajor; - var lng = x / shift * 180.0; - var lat = y / shift * 180.0; + var shift = Math.PI * rMajor; + var lng = x / shift * 180.0; + var lat = y / shift * 180.0; lat = 180 / Math.PI * (2 * Math.atan(Math.exp(lat * Math.PI / 180.0)) - Math.PI / 2.0); - return { lng: lng, lat: lat }; + return { lng: lng, lat: lat }; } export function createDivWithClass(className: string) { @@ -267,21 +268,21 @@ export function nmToFt(nm: number) { } export function polyContains(latlng: LatLng, polygon: Polygon) { - var poly = polygon.toGeoJSON(); + var poly = polygon.toGeoJSON(); return turf.inside(turf.point([latlng.lng, latlng.lat]), poly); } export function randomPointInPoly(polygon: Polygon): LatLng { - var bounds = polygon.getBounds(); - var x_min = bounds.getEast(); - var x_max = bounds.getWest(); - var y_min = bounds.getSouth(); - var y_max = bounds.getNorth(); + var bounds = polygon.getBounds(); + var x_min = bounds.getEast(); + var x_max = bounds.getWest(); + var y_min = bounds.getSouth(); + var y_max = bounds.getNorth(); var lat = y_min + (Math.random() * (y_max - y_min)); var lng = x_min + (Math.random() * (x_max - x_min)); - var poly = polygon.toGeoJSON(); + var poly = polygon.toGeoJSON(); var inside = turf.inside(turf.point([lng, lat]), poly); if (inside) { @@ -296,7 +297,7 @@ export function polygonArea(polygon: Polygon) { return turf.area(poly); } -export function randomUnitBlueprint(unitDatabase: UnitDatabase, options: {type?: string, role?: string, ranges?: string[], eras?: string[], coalition?: string} ) { +export function randomUnitBlueprint(unitDatabase: UnitDatabase, options: { type?: string, role?: string, ranges?: string[], eras?: string[], coalition?: string }) { /* Start from all the unit blueprints in the database */ var unitBlueprints = Object.values(unitDatabase.getBlueprints()); @@ -315,13 +316,13 @@ export function randomUnitBlueprint(unitDatabase: UnitDatabase, options: {type?: /* Keep only the units that have a range included in the requested values */ if (options.ranges) { - unitBlueprints = unitBlueprints.filter((unitBlueprint: UnitBlueprint) => { + unitBlueprints = unitBlueprints.filter((unitBlueprint: UnitBlueprint) => { var rangeType = ""; - var range = unitBlueprint.acquisitionRange ; + var range = unitBlueprint.acquisitionRange; if (range !== undefined) { - if (range >= 0 && range < 10000) + if (range >= 0 && range < 10000) rangeType = "Short range"; - else if (range >= 10000 && range < 100000) + else if (range >= 10000 && range < 100000) rangeType = "Medium range"; else if (range >= 100000 && range < 999999) rangeType = "Long range"; @@ -332,15 +333,15 @@ export function randomUnitBlueprint(unitDatabase: UnitDatabase, options: {type?: /* Keep only the units that have an era included in the requested values */ if (options.eras) { - unitBlueprints = unitBlueprints.filter((unitBlueprint: UnitBlueprint) => { - return unitBlueprint.era? options.eras?.includes(unitBlueprint.era): true; + unitBlueprints = unitBlueprints.filter((unitBlueprint: UnitBlueprint) => { + return unitBlueprint.era ? options.eras?.includes(unitBlueprint.era) : true; }); } /* Keep only the units that have the correct coalition, if selected */ if (options.coalition) { - unitBlueprints = unitBlueprints.filter((unitBlueprint: UnitBlueprint) => { - return (unitBlueprint.coalition && unitBlueprint.coalition !== "")? options.coalition === unitBlueprint.coalition: true; + unitBlueprints = unitBlueprints.filter((unitBlueprint: UnitBlueprint) => { + return (unitBlueprint.coalition && unitBlueprint.coalition !== "") ? options.coalition === unitBlueprint.coalition : true; }); } @@ -353,7 +354,7 @@ export function getMarkerCategoryByName(name: string) { return "aircraft"; else if (helicopterDatabase.getByName(name) != null) return "helicopter"; - else if (groundUnitDatabase.getByName(name) != null){ + else if (groundUnitDatabase.getByName(name) != null) { var type = groundUnitDatabase.getByName(name)?.type ?? ""; if (/\bAAA|SAM\b/.test(type) || /\bmanpad|stinger\b/i.test(type)) return "groundunit-sam"; @@ -362,7 +363,7 @@ export function getMarkerCategoryByName(name: string) { } else if (navyUnitDatabase.getByName(name) != null) return "navyunit"; - else + else return "aircraft"; // TODO add other unit types } @@ -379,40 +380,54 @@ export function getUnitDatabaseByCategory(category: string) { return null; } +export function getCategoryBlueprintIconSVG(category: string, unitName: string) { + + const path = "/resources/theme/images/buttons/visibility/"; + + // We can just send these back okay + if (["Aircraft", "Helicopter", "NavyUnit"].includes(category)) return `${path}${category.toLowerCase()}.svg`; + + // Return if not a ground units as it's therefore something we don't recognise + if (category !== "GroundUnit") return false; + + /** We need to get the unit detail for ground units so we can work out if it's an air defence unit or not **/ + return GROUND_UNIT_AIR_DEFENCE_REGEX.test(unitName) ? `${path}groundunit-sam.svg` : `${path}groundunit.svg`; +} + export function base64ToBytes(base64: string) { return Buffer.from(base64, 'base64').buffer; } export function enumToState(state: number) { - if (state < states.length) + if (state < states.length) return states[state]; - else + else return states[0]; } export function enumToROE(ROE: number) { - if (ROE < ROEs.length) + if (ROE < ROEs.length) return ROEs[ROE]; - else + else return ROEs[0]; } export function enumToReactionToThreat(reactionToThreat: number) { - if (reactionToThreat < reactionsToThreat.length) + if (reactionToThreat < reactionsToThreat.length) return reactionsToThreat[reactionToThreat]; - else + else return reactionsToThreat[0]; } export function enumToEmissioNCountermeasure(emissionCountermeasure: number) { - if (emissionCountermeasure < emissionsCountermeasures.length) + if (emissionCountermeasure < emissionsCountermeasures.length) return emissionsCountermeasures[emissionCountermeasure]; - else + else return emissionsCountermeasures[0]; } export function enumToCoalition(coalitionID: number) { - switch (coalitionID){ + switch (coalitionID) { case 0: return "neutral"; case 1: return "red"; case 2: return "blue"; @@ -421,7 +436,7 @@ export function enumToCoalition(coalitionID: number) { } export function coalitionToEnum(coalition: string) { - switch (coalition){ + switch (coalition) { case "neutral": return 0; case "red": return 1; case "blue": return 2; @@ -449,26 +464,27 @@ export function convertDateAndTimeToDate(dateAndTime: DateAndTime) { return new Date(year, month, date.Day, time.h, time.m, time.s); } -export function createCheckboxOption(value: string, text: string, checked: boolean = true, callback: CallableFunction = (ev: any) => {}, options?:any) { +export function createCheckboxOption(text: string, description: string, checked: boolean = true, callback: CallableFunction = (ev: any) => { }, options?: any) { options = { "disabled": false, "name": "", "readOnly": false, + "value": null, ...options }; var div = document.createElement("div"); div.classList.add("ol-checkbox"); var label = document.createElement("label"); - label.title = text; + label.title = description; var input = document.createElement("input"); input.type = "checkbox"; - input.checked = checked; - input.name = options.name; + input.checked = checked; + input.name = options.name; input.disabled = options.disabled; input.readOnly = options.readOnly; - input.value = value; + input.value = options.value; var span = document.createElement("span"); - span.innerText = value; + span.innerText = text; label.appendChild(input); label.appendChild(span); div.appendChild(label); @@ -489,6 +505,67 @@ export function getCheckboxOptions(dropdown: Dropdown) { return values; } +export function createTextInputOption(text: string, description: string, initialValue: string, type: string, callback: CallableFunction = (ev: any) => { }, options?: any) { + options = { + "disabled": false, + "name": "", + "readOnly": false, + ...options + }; + var div = document.createElement("div"); + div.classList.add("ol-text-input", "border"); + var label = document.createElement("label"); + label.title = description; + var input = document.createElement("input"); + input.type = type; + input.name = options.name; + input.disabled = options.disabled; + input.readOnly = options.readOnly; + if (options.min) + input.min = options.min; + if (options.max) + input.max = options.max; + input.value = initialValue; + input.style.width = "80px"; + var span = document.createElement("span"); + span.innerText = text; + label.appendChild(span); + label.appendChild(input); + div.appendChild(label); + input.onchange = (ev: any) => { + if (type === 'number') { + if (Number(input.max) && Number(ev.srcElement.value) > Number(input.max)) + input.value = input.max; + else if (Number(input.min) && Number(ev.srcElement.value) < Number(input.min)) + input.value = input.min; + } + callback(ev); + } + return div as HTMLElement; +} + +export function createSliderInputOption(text: string, description: string, initialValue: number, callback: CallableFunction = (ev: any) => { }, options?: any) { + var div = document.createElement("div"); + var label = document.createElement("label"); + label.title = description; + var input = new Slider(null, options.min ?? 0, options.max ?? 100, "", (val: number) => { + callback({currentTarget: {value: val}}); + }); + input.setValue(initialValue); + input.getContainer()?.querySelector(".ol-data-grid")?.classList.add("hide"); + var span = document.createElement("span"); + span.innerText = text; + span.style.width = "100%"; + span.style.margin = "auto"; + label.appendChild(span); + label.appendChild(input.getContainer() as HTMLElement); + label.style.display = "flex"; + label.style.alignContent = "center"; + label.style.width = "100%"; + div.appendChild(label); + return div as HTMLElement; +} + export function getGroundElevation(latlng: LatLng, callback: CallableFunction) { /* Get the ground elevation from the server endpoint */ const xhr = new XMLHttpRequest(); diff --git a/client/src/panels/connectionstatuspanel.ts b/frontend/website/src/panels/connectionstatuspanel.ts similarity index 100% rename from client/src/panels/connectionstatuspanel.ts rename to frontend/website/src/panels/connectionstatuspanel.ts diff --git a/client/src/panels/hotgrouppanel.ts b/frontend/website/src/panels/hotgrouppanel.ts similarity index 100% rename from client/src/panels/hotgrouppanel.ts rename to frontend/website/src/panels/hotgrouppanel.ts diff --git a/client/src/panels/logpanel.ts b/frontend/website/src/panels/logpanel.ts similarity index 100% rename from client/src/panels/logpanel.ts rename to frontend/website/src/panels/logpanel.ts diff --git a/client/src/panels/mouseinfopanel.ts b/frontend/website/src/panels/mouseinfopanel.ts similarity index 100% rename from client/src/panels/mouseinfopanel.ts rename to frontend/website/src/panels/mouseinfopanel.ts diff --git a/client/src/panels/panel.ts b/frontend/website/src/panels/panel.ts similarity index 100% rename from client/src/panels/panel.ts rename to frontend/website/src/panels/panel.ts diff --git a/client/src/panels/paneleventsmanager.ts b/frontend/website/src/panels/paneleventsmanager.ts similarity index 100% rename from client/src/panels/paneleventsmanager.ts rename to frontend/website/src/panels/paneleventsmanager.ts diff --git a/client/src/panels/serverstatuspanel.ts b/frontend/website/src/panels/serverstatuspanel.ts similarity index 100% rename from client/src/panels/serverstatuspanel.ts rename to frontend/website/src/panels/serverstatuspanel.ts diff --git a/client/src/panels/unitcontrolpanel.ts b/frontend/website/src/panels/unitcontrolpanel.ts similarity index 98% rename from client/src/panels/unitcontrolpanel.ts rename to frontend/website/src/panels/unitcontrolpanel.ts index 424b36d5..91af3e15 100644 --- a/client/src/panels/unitcontrolpanel.ts +++ b/frontend/website/src/panels/unitcontrolpanel.ts @@ -176,6 +176,7 @@ export class UnitControlPanel extends Panel { if (!context.getUseUnitControlPanel()) return; + this.#updateNumberOfSelectedUnits(); super.show(); this.#speedTypeSwitch.resetExpectedValue(); this.#altitudeTypeSwitch.resetExpectedValue(); @@ -420,6 +421,13 @@ export class UnitControlPanel extends Panel { } } + #updateNumberOfSelectedUnits() { + const num = getApp().getUnitsManager().getSelectedUnits().length; + this.getElement().querySelectorAll(".num-selected-units").forEach(el => { + if (el instanceof HTMLElement) el.innerText = num + ""; + }); + } + #applyAdvancedSettings() { /* HTML Elements */ const prohibitJettisonCheckbox = this.#advancedSettingsDialog.querySelector("#prohibit-jettison-checkbox")?.querySelector("input") as HTMLInputElement; diff --git a/client/src/panels/unitinfopanel.ts b/frontend/website/src/panels/unitinfopanel.ts similarity index 100% rename from client/src/panels/unitinfopanel.ts rename to frontend/website/src/panels/unitinfopanel.ts diff --git a/client/src/panels/unitlistpanel.ts b/frontend/website/src/panels/unitlistpanel.ts similarity index 100% rename from client/src/panels/unitlistpanel.ts rename to frontend/website/src/panels/unitlistpanel.ts diff --git a/client/src/plugin/pluginmanager.ts b/frontend/website/src/plugin/pluginmanager.ts similarity index 100% rename from client/src/plugin/pluginmanager.ts rename to frontend/website/src/plugin/pluginmanager.ts diff --git a/client/src/popups/popup.ts b/frontend/website/src/popups/popup.ts similarity index 100% rename from client/src/popups/popup.ts rename to frontend/website/src/popups/popup.ts diff --git a/frontend/website/src/schemas/airbases.schema.json b/frontend/website/src/schemas/airbases.schema.json new file mode 100644 index 00000000..c43f57d3 --- /dev/null +++ b/frontend/website/src/schemas/airbases.schema.json @@ -0,0 +1,67 @@ +{ + "type": "object", + "additionalProperties": false, + "properties": { + "airfields": { + "type": "object", + "minProperties": 1, + "patternProperties": { + ".*": { + "type": "object", + "properties": { + "elevation": { + "type": "string", + "pattern": "^(0|([1-9][0-9]*))?$" + }, + "ICAO": { + "type": "string" + }, + "runways": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "properties": { + "headings": { + "type": "array", + "items": { + "type": "object", + "patternProperties": { + ".*": { + "type": "object", + "properties": { + "ILS": { + "type": "string", + "pattern": "^(1[0-9]{1,2}\\.[0-9][05])?$" + }, + "magHeading": { + "type": "string", + "pattern": "^([0-2][0-9]{2})|(3(([0-5][0-9])|(60)))?$" + } + }, + "required": ["magHeading"] + } + } + }, + "minItems": 1 + }, + "length": { + "type": "string", + "pattern": "^[1-9][0-9]{3,4}$" + } + }, + "required": [ "headings", "length" ] + } + }, + "TACAN": { + "type": "string", + "pattern": "^([1-9][0-9]{1,2}X)?$" + } + }, + "required": [ "elevation", "runways" ] + } + } + } + }, + "required": ["airfields"] +} \ No newline at end of file diff --git a/frontend/website/src/schemas/importdata.schema.json b/frontend/website/src/schemas/importdata.schema.json new file mode 100644 index 00000000..43e9cfd2 --- /dev/null +++ b/frontend/website/src/schemas/importdata.schema.json @@ -0,0 +1,428 @@ +{ + "$defs": { + "coalitionName": { + "enum": [ + "blue", + "neutral", + "red" + ], + "type": "string" + }, + "lat": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "lng": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "vec2": { + "additionalProperties": false, + "properties": { + "lat": { + "$ref": "#/$defs/lat" + }, + "lng": { + "$ref": "#/$defs/lng" + } + }, + "required": [ + "lat", + "lng" + ], + "type": "object" + }, + "vec3": { + "additionalProperties": false, + "properties": { + "alt": { + "type": "number" + }, + "lat": { + "$ref": "#/$defs/lat" + }, + "lng": { + "$ref": "#/$defs/lng" + } + }, + "required": [ + "alt", + "lat", + "lng" + ], + "type": "object" + } + }, + "patternProperties": { + ".*": { + "items": { + "additionalProperties": false, + "properties": { + "activePath": { + "items": { + "$ref": "#/$defs/vec3" + }, + "type": "array" + }, + "alive": { + "type": "boolean" + }, + "ammo": { + "items": { + "additionalProperties": false, + "properties": { + "category": { + "minimum": 0, + "type": "number" + }, + "guidance": { + "minimum": 0, + "type": "number" + }, + "missileCategory": { + "minimum": 0, + "type": "number" + }, + "name": { + "minLength": 3, + "type": "string" + }, + "quantity": { + "minimum": 0, + "type": "number" + } + }, + "required": [ + "quantity", + "name", + "guidance", + "category", + "missileCategory" + ], + "type": "object" + }, + "type": "array" + }, + "category": { + "type": "string" + }, + "categoryDisplayName": { + "type": "string" + }, + "coalition": { + "$ref": "#/$defs/coalitionName" + }, + "contacts": { + "type": "array" + }, + "controlled": { + "type": "boolean" + }, + "country": { + "type": "number" + }, + "desiredAltitude": { + "minimum": 0, + "type": "number" + }, + "desiredAltitudeType": { + "enum": [ + "AGL", + "ASL" + ], + "type": "string" + }, + "desiredSpeed": { + "minimum": 0, + "type": "number" + }, + "desiredSpeedType": { + "enum": [ + "CAS", + "GS" + ], + "type": "string" + }, + "emissionsCountermeasures": { + "enum": [ + "attack", + "defend", + "free", + "silent" + ], + "type": "string" + }, + "followRoads": { + "type": "boolean" + }, + "formationOffset": { + "additionalProperties": false, + "properties": { + "x": { + "minimum": 0, + "type": "number" + }, + "y": { + "minimum": 0, + "type": "number" + }, + "z": { + "minimum": 0, + "type": "number" + } + }, + "required": [ + "x", + "y", + "z" + ], + "type": "object" + }, + "fuel": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "generalSettings": { + "additionalProperties": false, + "properties": { + "prohibitAA": { + "type": "boolean" + }, + "prohibitAfterburner": { + "type": "boolean" + }, + "prohibitAG": { + "type": "boolean" + }, + "prohibitAirWpn": { + "type": "boolean" + }, + "prohibitJettison": { + "type": "boolean" + } + }, + "required": [ + "prohibitAA", + "prohibitAfterburner", + "prohibitAG", + "prohibitAirWpn", + "prohibitJettison" + ], + "type": "object" + }, + "groupName": { + "type": "string" + }, + "hasTask": { + "type": "boolean" + }, + "heading": { + "type": "number" + }, + "health": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "horizontalVelocity": { + "minimum": 0, + "type": "number" + }, + "human": { + "type": "boolean" + }, + "ID": { + "type": "number" + }, + "isActiveAWACS": { + "type": "boolean" + }, + "isActiveTanker": { + "type": "boolean" + }, + "isLeader": { + "type": "boolean" + }, + "leaderID": { + "minimum": 0, + "type": "number" + }, + "name": { + "type": "string" + }, + "onOff": { + "type": "boolean" + }, + "operateAs": { + "$ref": "#/$defs/coalitionName" + }, + "position": { + "$ref": "#/$defs/vec3" + }, + "radio": { + "additionalProperties": false, + "properties": { + "callsign": { + "type": "number" + }, + "callsignNumber": { + "type": "number" + }, + "frequency": { + "type": "number" + } + }, + "required": [ + "frequency", + "callsign", + "callsignNumber" + ], + "type": "object" + }, + "reactionToThreat": { + "enum": [ + "evade", + "maneouvre", + "none", + "passive" + ], + "type": "string" + }, + "ROE": { + "enum": [ + "designated", + "free", + "hold", + "return" + ], + "type": "string" + }, + "shotsIntensity": { + "maximum": 3, + "minimum": 1, + "type": "number" + }, + "shotsScatter": { + "maximum": 3, + "minimum": 1, + "type": "number" + }, + "speed": { + "minimum": 0, + "type": "number" + }, + "state": { + "type": "string" + }, + "TACAN": { + "properties": { + "callsign": { + "type": "string" + }, + "channel": { + "minimum": 0, + "type": "number" + }, + "isOn": { + "type": "boolean" + }, + "XY": { + "enum": [ + "X", + "Y" + ], + "type": "string" + } + }, + "required": [ + "callsign", + "channel", + "isOn", + "XY" + ], + "type": "object" + }, + "targetID": { + "minimum": 0, + "type": "number" + }, + "targetPosition": { + "anyOf": [ + {"$ref": "#/$defs/vec2"}, + {"$ref": "#/$defs/vec3"} + ] + }, + "task": { + "type": "string" + }, + "track": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "verticalVelocity": { + "minimum": 0, + "type": "number" + } + }, + "type": "object", + "required": [ + "activePath", + "alive", + "ammo", + "category", + "categoryDisplayName", + "coalition", + "contacts", + "controlled", + "country", + "desiredAltitude", + "desiredAltitudeType", + "desiredSpeed", + "desiredSpeedType", + "emissionsCountermeasures", + "followRoads", + "formationOffset", + "fuel", + "generalSettings", + "groupName", + "hasTask", + "heading", + "health", + "horizontalVelocity", + "human", + "ID", + "isActiveAWACS", + "isActiveTanker", + "isLeader", + "leaderID", + "name", + "onOff", + "operateAs", + "position", + "radio", + "reactionToThreat", + "ROE", + "shotsIntensity", + "shotsScatter", + "speed", + "state", + "TACAN", + "targetID", + "targetPosition", + "task", + "track", + "unitName", + "verticalVelocity" + ] + }, + "minItems": 1, + "type": "array" + } + }, + "type": "object" +} \ No newline at end of file diff --git a/frontend/website/src/schemas/schema.ts b/frontend/website/src/schemas/schema.ts new file mode 100644 index 00000000..a332f845 --- /dev/null +++ b/frontend/website/src/schemas/schema.ts @@ -0,0 +1,50 @@ +import Ajv from "ajv"; +import { AnySchemaObject } from "ajv/dist/core"; + + +// For future extension +abstract class JSONSchemaValidator { + + #ajv: Ajv; + #compiledValidator: any; + #schema!: AnySchemaObject; + + constructor(schema: AnySchemaObject) { + this.#schema = schema; + + this.#ajv = new Ajv({ + "allErrors": true + }); + + this.#compiledValidator = this.getAjv().compile(this.getSchema()); + + } + + getAjv() { + return this.#ajv; + } + + getCompiledValidator() { + return this.#compiledValidator; + } + + getErrors() { + return this.getCompiledValidator().errors; + } + + getSchema() { + return this.#schema; + } + + validate(data: any) { + return (this.getCompiledValidator())(data); + } + +} + +export class ImportFileJSONSchemaValidator extends JSONSchemaValidator { + constructor() { + const schema = require("../schemas/importdata.schema.json"); + super(schema); + } +} \ No newline at end of file diff --git a/client/src/server/dataextractor.ts b/frontend/website/src/server/dataextractor.ts similarity index 100% rename from client/src/server/dataextractor.ts rename to frontend/website/src/server/dataextractor.ts diff --git a/client/src/server/servermanager.ts b/frontend/website/src/server/servermanager.ts similarity index 100% rename from client/src/server/servermanager.ts rename to frontend/website/src/server/servermanager.ts diff --git a/client/src/shortcut/shortcut.ts b/frontend/website/src/shortcut/shortcut.ts similarity index 100% rename from client/src/shortcut/shortcut.ts rename to frontend/website/src/shortcut/shortcut.ts diff --git a/client/src/shortcut/shortcutmanager.ts b/frontend/website/src/shortcut/shortcutmanager.ts similarity index 76% rename from client/src/shortcut/shortcutmanager.ts rename to frontend/website/src/shortcut/shortcutmanager.ts index 2e80ea66..8d86f741 100644 --- a/client/src/shortcut/shortcutmanager.ts +++ b/frontend/website/src/shortcut/shortcutmanager.ts @@ -27,18 +27,18 @@ export class ShortcutManager extends Manager { } - add( name: string, shortcut:any ) { - console.error( "ShortcutManager:add() cannot be used. Use addKeyboardShortcut or addMouseShortcut." ); + add(name: string, shortcut: any) { + console.error("ShortcutManager:add() cannot be used. Use addKeyboardShortcut or addMouseShortcut."); return this; } - addKeyboardShortcut( name:string, shortcutKeyboardOptions:ShortcutKeyboardOptions ) { - super.add( name, new ShortcutKeyboard( shortcutKeyboardOptions ) ); + addKeyboardShortcut(name: string, shortcutKeyboardOptions: ShortcutKeyboardOptions) { + super.add(name, new ShortcutKeyboard(shortcutKeyboardOptions)); return this; } - addMouseShortcut( name:string, shortcutMouseOptions:ShortcutMouseOptions ) { - super.add( name, new ShortcutMouse( shortcutMouseOptions ) ); + addMouseShortcut(name: string, shortcutMouseOptions: ShortcutMouseOptions) { + super.add(name, new ShortcutMouse(shortcutMouseOptions)); return this; } diff --git a/client/src/toolbars/commandmodetoolbar.ts b/frontend/website/src/toolbars/commandmodetoolbar.ts similarity index 100% rename from client/src/toolbars/commandmodetoolbar.ts rename to frontend/website/src/toolbars/commandmodetoolbar.ts diff --git a/client/src/toolbars/primarytoolbar.ts b/frontend/website/src/toolbars/primarytoolbar.ts similarity index 59% rename from client/src/toolbars/primarytoolbar.ts rename to frontend/website/src/toolbars/primarytoolbar.ts index ad0aa625..a9d477c1 100644 --- a/client/src/toolbars/primarytoolbar.ts +++ b/frontend/website/src/toolbars/primarytoolbar.ts @@ -1,14 +1,21 @@ +import { getApp } from ".."; import { Dropdown } from "../controls/dropdown"; +import { Switch } from "../controls/switch"; import { Toolbar } from "./toolbar"; export class PrimaryToolbar extends Toolbar { #mainDropdown: Dropdown; + #cameraLinkTypeSwitch: Switch; constructor(ID: string) { super(ID); /* The content of the dropdown is entirely defined in the .ejs file */ this.#mainDropdown = new Dropdown("app-icon", () => { }); + + this.#cameraLinkTypeSwitch = new Switch("camera-link-type-switch", (value: boolean) => { + getApp().getMap().setCameraControlMode(value? 'map': 'live'); + }) } getMainDropdown() { diff --git a/client/src/toolbars/toolbar.ts b/frontend/website/src/toolbars/toolbar.ts similarity index 100% rename from client/src/toolbars/toolbar.ts rename to frontend/website/src/toolbars/toolbar.ts diff --git a/client/src/unit/contextaction.ts b/frontend/website/src/unit/contextaction.ts similarity index 100% rename from client/src/unit/contextaction.ts rename to frontend/website/src/unit/contextaction.ts diff --git a/client/src/unit/contextactionset.ts b/frontend/website/src/unit/contextactionset.ts similarity index 100% rename from client/src/unit/contextactionset.ts rename to frontend/website/src/unit/contextactionset.ts diff --git a/client/src/unit/databases/aircraftdatabase.ts b/frontend/website/src/unit/databases/aircraftdatabase.ts similarity index 90% rename from client/src/unit/databases/aircraftdatabase.ts rename to frontend/website/src/unit/databases/aircraftdatabase.ts index 1c4069b3..bb0d58f3 100644 --- a/client/src/unit/databases/aircraftdatabase.ts +++ b/frontend/website/src/unit/databases/aircraftdatabase.ts @@ -1,11 +1,10 @@ import { getApp } from "../.."; import { GAME_MASTER } from "../../constants/constants"; -import { UnitBlueprint } from "../../interfaces"; import { UnitDatabase } from "./unitdatabase" export class AircraftDatabase extends UnitDatabase { constructor() { - super('databases/units/aircraftdatabase.json'); + super('api/databases/units/aircraftdatabase'); } getCategory() { diff --git a/client/src/unit/databases/citiesdatabase.ts b/frontend/website/src/unit/databases/citiesdatabase.ts similarity index 100% rename from client/src/unit/databases/citiesdatabase.ts rename to frontend/website/src/unit/databases/citiesdatabase.ts diff --git a/client/src/unit/databases/groundunitdatabase.ts b/frontend/website/src/unit/databases/groundunitdatabase.ts similarity index 94% rename from client/src/unit/databases/groundunitdatabase.ts rename to frontend/website/src/unit/databases/groundunitdatabase.ts index a4d8213a..a33c70e2 100644 --- a/client/src/unit/databases/groundunitdatabase.ts +++ b/frontend/website/src/unit/databases/groundunitdatabase.ts @@ -4,7 +4,7 @@ import { UnitDatabase } from "./unitdatabase" export class GroundUnitDatabase extends UnitDatabase { constructor() { - super('databases/units/groundunitdatabase.json'); + super('api/databases/units/groundunitdatabase'); } getSpawnPointsByName(name: string) { diff --git a/client/src/unit/databases/helicopterdatabase.ts b/frontend/website/src/unit/databases/helicopterdatabase.ts similarity index 94% rename from client/src/unit/databases/helicopterdatabase.ts rename to frontend/website/src/unit/databases/helicopterdatabase.ts index d105d282..2d4841ac 100644 --- a/client/src/unit/databases/helicopterdatabase.ts +++ b/frontend/website/src/unit/databases/helicopterdatabase.ts @@ -4,7 +4,7 @@ import { UnitDatabase } from "./unitdatabase" export class HelicopterDatabase extends UnitDatabase { constructor() { - super('databases/units/helicopterdatabase.json'); + super('api/databases/units/helicopterdatabase'); } getSpawnPointsByName(name: string) { diff --git a/client/src/unit/databases/navyunitdatabase.ts b/frontend/website/src/unit/databases/navyunitdatabase.ts similarity index 95% rename from client/src/unit/databases/navyunitdatabase.ts rename to frontend/website/src/unit/databases/navyunitdatabase.ts index 6f5111eb..23cd17a3 100644 --- a/client/src/unit/databases/navyunitdatabase.ts +++ b/frontend/website/src/unit/databases/navyunitdatabase.ts @@ -4,7 +4,7 @@ import { UnitDatabase } from "./unitdatabase" export class NavyUnitDatabase extends UnitDatabase { constructor() { - super('databases/units/navyunitdatabase.json'); + super('api/databases/units/navyunitdatabase'); } getSpawnPointsByName(name: string) { diff --git a/client/src/unit/databases/unitdatabase.ts b/frontend/website/src/unit/databases/unitdatabase.ts similarity index 91% rename from client/src/unit/databases/unitdatabase.ts rename to frontend/website/src/unit/databases/unitdatabase.ts index d30a79b2..f2c695ce 100644 --- a/client/src/unit/databases/unitdatabase.ts +++ b/frontend/website/src/unit/databases/unitdatabase.ts @@ -214,19 +214,6 @@ export abstract class UnitDatabase { return null; } - generateTestGrid(initialPosition: LatLng) { - var filteredBlueprints = this.getBlueprints(); - const step = 0.01; - var nUnits = Object.values(filteredBlueprints).length; - var gridSize = Math.ceil(Math.sqrt(nUnits)); - Object.values(filteredBlueprints).forEach((unitBlueprint: UnitBlueprint, idx: number) => { - var row = Math.floor(idx / gridSize); - var col = idx - row * gridSize; - var location = new LatLng(initialPosition.lat + col * step, initialPosition.lng + row * step) - getApp().getUnitsManager().spawnUnits(this.getCategory(), [{unitType: unitBlueprint.name, location: location, altitude: 1000, loadout: "", liveryID: ""}]); - }) - } - getSpawnPointsByLabel(label: string) { var blueprint = this.getByLabel(label); if (blueprint) diff --git a/client/src/unit/group.ts b/frontend/website/src/unit/group.ts similarity index 100% rename from client/src/unit/group.ts rename to frontend/website/src/unit/group.ts diff --git a/client/src/unit/importexport/unitdatafile.ts b/frontend/website/src/unit/importexport/unitdatafile.ts similarity index 90% rename from client/src/unit/importexport/unitdatafile.ts rename to frontend/website/src/unit/importexport/unitdatafile.ts index 2a0c1611..0cffc11e 100644 --- a/client/src/unit/importexport/unitdatafile.ts +++ b/frontend/website/src/unit/importexport/unitdatafile.ts @@ -31,10 +31,11 @@ export abstract class UnitDataFile { headersHTML += `${coalition[0].toUpperCase() + coalition.substring(1)}`; const optionIsValid = this.data[category].hasOwnProperty(coalition); - let checkboxHTML = createCheckboxOption(`${category}:${coalition}`, category, optionIsValid, () => { }, { + let checkboxHTML = createCheckboxOption(``, category, optionIsValid, () => { }, { "disabled": !optionIsValid, "name": "category-coalition-selection", - "readOnly": !optionIsValid + "readOnly": !optionIsValid, + "value" : `${category}:${coalition}` }).outerHTML; if (optionIsValid) diff --git a/client/src/unit/importexport/unitdatafileexport.ts b/frontend/website/src/unit/importexport/unitdatafileexport.ts similarity index 94% rename from client/src/unit/importexport/unitdatafileexport.ts rename to frontend/website/src/unit/importexport/unitdatafileexport.ts index 1bdb0d22..2a4f7a82 100644 --- a/client/src/unit/importexport/unitdatafileexport.ts +++ b/frontend/website/src/unit/importexport/unitdatafileexport.ts @@ -25,6 +25,10 @@ export class UnitDataFileExport extends UnitDataFile { * Show the form to start the export journey */ showForm(units: Unit[]) { + this.dialog.getElement().querySelectorAll("[data-on-error]").forEach((el:Element) => { + el.classList.toggle("hide", el.getAttribute("data-on-error") === "show"); + }); + const data: any = {}; const unitCanBeExported = (unit: Unit) => !["Aircraft", "Helicopter"].includes(unit.getCategory()); diff --git a/client/src/unit/importexport/unitdatafileimport.ts b/frontend/website/src/unit/importexport/unitdatafileimport.ts similarity index 66% rename from client/src/unit/importexport/unitdatafileimport.ts rename to frontend/website/src/unit/importexport/unitdatafileimport.ts index 5a0e2221..271a7462 100644 --- a/client/src/unit/importexport/unitdatafileimport.ts +++ b/frontend/website/src/unit/importexport/unitdatafileimport.ts @@ -1,6 +1,7 @@ import { getApp } from "../.."; import { Dialog } from "../../dialog/dialog"; import { UnitData } from "../../interfaces"; +import { ImportFileJSONSchemaValidator } from "../../schemas/schema"; import { UnitDataFile } from "./unitdatafile"; export class UnitDataFileImport extends UnitDataFile { @@ -43,26 +44,70 @@ export class UnitDataFileImport extends UnitDataFile { continue; let unitsToSpawn = groupData.filter((unitData: UnitData) => this.#unitDataCanBeImported(unitData)).map((unitData: UnitData) => { - return { unitType: unitData.name, location: unitData.position, liveryID: "" } + return { unitType: unitData.name, location: unitData.position, liveryID: "", skill: "High" } }); unitsManager.spawnUnits(category, unitsToSpawn, coalition, false); } + } - /* - for (let groupName in groups) { - if (groupName !== "" && groups[groupName].length > 0 && (groups[groupName].every((unit: UnitData) => { return unit.category == "GroundUnit"; }) || groups[groupName].every((unit: any) => { return unit.category == "NavyUnit"; }))) { - var aliveUnits = groups[groupName].filter((unit: UnitData) => { return unit.alive }); - var units = aliveUnits.map((unit: UnitData) => { - return { unitType: unit.name, location: unit.position, liveryID: "" } - }); - getApp().getUnitsManager().spawnUnits(groups[groupName][0].category, units, groups[groupName][0].coalition, true); + selectFile() { + var input = document.createElement("input"); + input.type = "file"; + input.addEventListener("change", (e: any) => { + var file = e.target.files[0]; + if (!file) { + return; } - } - //*/ + var reader = new FileReader(); + reader.onload = (e: any) => { + + try { + this.#fileData = JSON.parse(e.target.result); + + const validator = new ImportFileJSONSchemaValidator(); + if (!validator.validate(this.#fileData)) { + const errors = validator.getErrors().reduce((acc:any, error:any) => { + let errorString = error.instancePath.substring(1) + ": " + error.message; + if (error.params) { + const {allowedValues} = error.params; + if (allowedValues) + errorString += ": " + allowedValues.join(', '); + } + acc.push(errorString); + return acc; + }, [] as string[]); + this.#showFileDataErrors(errors); + } else { + this.#showForm(); + } + } catch(e:any) { + this.#showFileDataErrors([e]); + } + }; + reader.readAsText(file); + }) + input.click(); + } + + #showFileDataErrors( reasons:string[]) { + + this.dialog.getElement().querySelectorAll("[data-on-error]").forEach((el:Element) => { + el.classList.toggle("hide", el.getAttribute("data-on-error") === "hide"); + }); + + const reasonsList = this.dialog.getElement().querySelector(".import-error-reasons"); + if (reasonsList instanceof HTMLElement) + reasonsList.innerHTML = `
  • ${reasons.join("
  • ")}
  • `; + + this.dialog.show(); } #showForm() { + this.dialog.getElement().querySelectorAll("[data-on-error]").forEach((el:Element) => { + el.classList.toggle("hide", el.getAttribute("data-on-error") === "show"); + }); + const data: any = {}; for (const [group, units] of Object.entries(this.#fileData)) { @@ -87,44 +132,11 @@ export class UnitDataFileImport extends UnitDataFile { } - /* - groups.filter((unit:Unit) => unitCanBeImported(unit)).forEach((unit:Unit) => { - const category = unit.getCategoryLabel(); - const coalition = unit.getCoalition(); - - if (!data.hasOwnProperty(category)) { - data[category] = {}; - } - - if (!data[category].hasOwnProperty(coalition)) - data[category][coalition] = []; - - data[category][coalition].push(unit); - }); - //*/ this.data = data; this.buildCategoryCoalitionTable(); this.dialog.show(); } - selectFile() { - var input = document.createElement("input"); - input.type = "file"; - input.addEventListener("change", (e: any) => { - var file = e.target.files[0]; - if (!file) { - return; - } - var reader = new FileReader(); - reader.onload = (e: any) => { - this.#fileData = JSON.parse(e.target.result); - this.#showForm(); - }; - reader.readAsText(file); - }) - input.click(); - } - #unitDataCanBeImported(unitData: UnitData) { return unitData.alive && this.#unitGroupDataCanBeImported([unitData]); } diff --git a/client/src/unit/unit.ts b/frontend/website/src/unit/unit.ts similarity index 99% rename from client/src/unit/unit.ts rename to frontend/website/src/unit/unit.ts index 6166ce41..ab8f8b9a 100644 --- a/client/src/unit/unit.ts +++ b/frontend/website/src/unit/unit.ts @@ -1654,7 +1654,7 @@ export class GroundUnit extends Unit { /* When we zoom past the grouping limit, grouping is enabled and the unit is a leader, we redraw the unit to apply any possible grouped marker */ checkZoomRedraw(): boolean { - return (this.getIsLeader() && getApp().getMap().getVisibilityOptions()[HIDE_GROUP_MEMBERS] && + return (this.getIsLeader() && getApp().getMap().getVisibilityOptions()[HIDE_GROUP_MEMBERS] as boolean && (getApp().getMap().getZoom() >= GROUPING_ZOOM_TRANSITION && getApp().getMap().getPreviousZoom() < GROUPING_ZOOM_TRANSITION || getApp().getMap().getZoom() < GROUPING_ZOOM_TRANSITION && getApp().getMap().getPreviousZoom() >= GROUPING_ZOOM_TRANSITION)) } diff --git a/client/src/unit/unitsmanager.ts b/frontend/website/src/unit/unitsmanager.ts similarity index 99% rename from client/src/unit/unitsmanager.ts rename to frontend/website/src/unit/unitsmanager.ts index da455dc1..eebdefde 100644 --- a/client/src/unit/unitsmanager.ts +++ b/frontend/website/src/unit/unitsmanager.ts @@ -1320,7 +1320,7 @@ export class UnitsManager { unitBlueprint = randomUnitBlueprint(groundUnitDatabase, { type: type, eras: activeEras, ranges: activeRanges }); if (unitBlueprint) - this.spawnUnits("GroundUnit", [{ unitType: unitBlueprint.name, location: latlng, liveryID: "" }], coalitionArea.getCoalition(), false, "", ""); + this.spawnUnits("GroundUnit", [{ unitType: unitBlueprint.name, location: latlng, liveryID: "", skill: "High" }], coalitionArea.getCoalition(), false, "", ""); } } } @@ -1350,7 +1350,7 @@ export class UnitsManager { unitBlueprint = randomUnitBlueprint(groundUnitDatabase, { type: type, eras: activeEras, ranges: activeRanges }); if (unitBlueprint) - this.spawnUnits("GroundUnit", [{ unitType: unitBlueprint.name, location: latlng, liveryID: "" }], coalitionArea.getCoalition(), false, "", ""); + this.spawnUnits("GroundUnit", [{ unitType: unitBlueprint.name, location: latlng, liveryID: "", skill: "High" }], coalitionArea.getCoalition(), false, "", ""); } } } @@ -1427,6 +1427,16 @@ export class UnitsManager { if (spawnPoints <= getApp().getMissionManager().getAvailableSpawnPoints()) { getApp().getMissionManager().setSpentSpawnPoints(spawnPoints); spawnFunction(); + document.dispatchEvent( new CustomEvent( "unitSpawned", { + "detail": { + "airbase": airbase, + "category": category, + "coalition": coalition, + "country": country, + "immediate": immediate, + "unitSpawnTable": units + } + })); return true; } else { (getApp().getPopupsManager().get("infoPopup") as Popup).setText("Not enough spawn points available!"); diff --git a/client/src/weapon/weapon.ts b/frontend/website/src/weapon/weapon.ts similarity index 100% rename from client/src/weapon/weapon.ts rename to frontend/website/src/weapon/weapon.ts diff --git a/client/src/weapon/weaponsmanager.ts b/frontend/website/src/weapon/weaponsmanager.ts similarity index 100% rename from client/src/weapon/weaponsmanager.ts rename to frontend/website/src/weapon/weaponsmanager.ts diff --git a/client/tsconfig.json b/frontend/website/tsconfig.json similarity index 100% rename from client/tsconfig.json rename to frontend/website/tsconfig.json diff --git a/installer/archive/INSTRUCTIONS.txt b/installer/archive/INSTRUCTIONS.txt deleted file mode 100644 index 3d57a01a..00000000 --- a/installer/archive/INSTRUCTIONS.txt +++ /dev/null @@ -1,31 +0,0 @@ - _____ _____ _____ ____ _ - | __ \ / ____|/ ____| / __ \| | - | | | | | | (___ | | | | |_ _ _ __ ___ _ __ _ _ ___ - | | | | | \___ \ | | | | | | | | '_ ` _ \| '_ \| | | / __| - | |__| | |____ ____) | | |__| | | |_| | | | | | | |_) | |_| \__ \ - |_____/ \_____|_____/ \____/|_|\__, |_| |_| |_| .__/ \__,_|___/ - __/ | | | - |___/ |_| - -v1.0.3 - -INSTALLATION INSTRUCTIONS - -1) install node.js by running the node-v20.10.0-x64.msi installer (NOTE: Feel free to check the settings, provided you do not prevent it from keeping the add to path option. -You can click straight through the pages without changes if you wish, and it will install correctly.); - -2) install DCS Olympus by copying the Mods and Scripts folder into your DCS Saved Games folder (by default \Saved Games\dcs.openbeta); - -3) start a mission and enjoy! - -!!!!!!!!!!!!!!!!!!!!!!IMPORTANT NOTE!!!!!!!!!!!!!!!!!!!!!!! - -If you are installing DCS Olympus on a dedicated server and want other people to connect to it remotely you need to EITHER: - -1) Run DCS SERVER as admin; - -2) Run the following command in an admin cmd console: - - netsh http add urlacl url="http://*:/olympus/" user= - -Remember to replace with the BACKEND PORT you select during installation (3001 by default) and with the user that runs the DCS SERVER. diff --git a/installer/installer/INSTRUCTIONS.txt b/installer/installer/INSTRUCTIONS.txt deleted file mode 100644 index d851ee74..00000000 --- a/installer/installer/INSTRUCTIONS.txt +++ /dev/null @@ -1,30 +0,0 @@ - _____ _____ _____ ____ _ - | __ \ / ____|/ ____| / __ \| | - | | | | | | (___ | | | | |_ _ _ __ ___ _ __ _ _ ___ - | | | | | \___ \ | | | | | | | | '_ ` _ \| '_ \| | | / __| - | |__| | |____ ____) | | |__| | | |_| | | | | | | |_) | |_| \__ \ - |_____/ \_____|_____/ \____/|_|\__, |_| |_| |_| .__/ \__,_|___/ - __/ | | | - |___/ |_| - -v1.0.3 - -INSTALLATION INSTRUCTIONS - -1) install node.js by running the node-v20.10.0-x64.msi installer (NOTE: Feel free to check the settings, provided you do not prevent it from keeping the add to path option. You can click straight through the pages without changes if you wish, and it will install correctly.); - -2) install DCS Olympus by running the provided installer; - -3) start a mission and enjoy! - -!!!!!!!!!!!!!!!!!!!!!!IMPORTANT NOTE!!!!!!!!!!!!!!!!!!!!!!! - -If you are installing DCS Olympus on a dedicated server and want other people to connect to it remotely you need to EITHER: - -1) Run DCS SERVER as admin; - -2) Run the following command in an admin cmd console: - - netsh http add urlacl url="http://*:/olympus/" user= - -Remember to replace with the BACKEND PORT you select during installation (3001 by default) and with the user that runs the DCS SERVER. diff --git a/installer/olympus.iss b/installer/olympus.iss deleted file mode 100644 index bbdde189..00000000 --- a/installer/olympus.iss +++ /dev/null @@ -1,78 +0,0 @@ -#define version "{{OLYMPUS_VERSION_NUMBER}}.{{OLYMPUS_COMMIT_HASH}}" - -[Setup] -AppName=DCS Olympus -AppVerName=DCS Olympus {#version} -DefaultDirName={usersavedgames}\DCS Olympus -DefaultGroupName=DCSOlympus -OutputBaseFilename=DCSOlympus_{#version} -UninstallFilesDir={app} -SetupIconFile="..\img\olympus.ico" -DirExistsWarning=no -AppendDefaultDirName=no -LicenseFile="..\LEGAL.txt" -PrivilegesRequired=lowest -InfoBeforeFile="..\notes.txt" - -[Messages] -WizardSelectDir=Select the location of DCS's Saved Games folder -SelectDirDesc=Where is DCS's Saved Games folder? -SelectDirLabel3=DCS Olympus must be installed within DCS's Saved Games folder. -SelectDirBrowseLabel=This is the detected path. If this is incorrect, click Browse to set the correct folder. - -[Tasks] -Name: "desktopicon"; Description: "Create desktop shortcut"; GroupDescription: "Additional icons"; Flags: unchecked -Name: "installmodules"; Description: "Install node.js modules"; GroupDescription: "Dependencies"; - -[Files] -Source: "..\olympus.json"; DestDir: "{app}"; - -Source: "..\scripts\OlympusHook.lua"; DestDir: "{app}\Scripts"; Flags: ignoreversion -Source: "..\scripts\OlympusCommand.lua"; DestDir: "{app}\mod\scripts"; Flags: ignoreversion -Source: "..\scripts\unitPayloads.lua"; DestDir: "{app}\mod\scripts"; Flags: ignoreversion -Source: "..\scripts\templates.lua"; DestDir: "{app}\mod\scripts"; Flags: ignoreversion -Source: "..\scripts\mist.lua"; DestDir: "{app}\mod\scripts"; Flags: ignoreversion -Source: "..\scripts\mods.lua"; DestDir: "{app}\mod\scripts"; Flags: ignoreversion - -Source: "..\mod\*"; DestDir: "{app}\mod"; Flags: ignoreversion recursesubdirs; -Source: "..\bin\*.dll"; DestDir: "{app}\mod\bin"; Flags: ignoreversion; -Source: "..\client\public\databases\*"; DestDir: "{app}\mod\databases"; Flags: ignoreversion recursesubdirs; - -Source: "..\client\bin\*"; DestDir: "{app}\client\bin"; Flags: ignoreversion; -Source: "..\client\public\*"; DestDir: "{app}\client\public"; Flags: ignoreversion recursesubdirs; -Source: "..\client\routes\*"; DestDir: "{app}\client\routes"; Flags: ignoreversion recursesubdirs; -Source: "..\client\views\*"; DestDir: "{app}\client\views"; Flags: ignoreversion recursesubdirs; -Source: "..\client\app.js"; DestDir: "{app}\client"; Flags: ignoreversion; -Source: "..\client\demo.js"; DestDir: "{app}\client"; Flags: ignoreversion; -Source: "..\client\client.js"; DestDir: "{app}\client"; Flags: ignoreversion; -Source: "..\client\package.json"; DestDir: "{app}\client"; Flags: ignoreversion; -Source: "..\client\configurator.js"; DestDir: "{app}\client"; Flags: ignoreversion; -Source: "..\client\install.bat"; DestDir: "{app}\client"; Flags: ignoreversion; -Source: "..\client\*.vbs"; DestDir: "{app}\client"; Flags: ignoreversion; - -Source: "..\manager\icons\*"; DestDir: "{app}\manager\icons"; Flags: ignoreversion; -Source: "..\manager\ejs\*"; DestDir: "{app}\manager\ejs"; Flags: ignoreversion; -Source: "..\manager\javascripts\*"; DestDir: "{app}\manager\javascripts"; Flags: ignoreversion; -Source: "..\manager\stylesheets\*"; DestDir: "{app}\manager\stylesheets"; Flags: ignoreversion; -Source: "..\manager\*"; DestDir: "{app}\manager"; Flags: ignoreversion; - -Source: "..\img\olympus.ico"; DestDir: "{app}\img"; Flags: ignoreversion; -Source: "..\img\olympus_server.ico"; DestDir: "{app}\img"; Flags: ignoreversion; -Source: "..\img\olympus_configurator.ico"; DestDir: "{app}\img"; Flags: ignoreversion; -Source: "..\img\configurator_logo.png"; DestDir: "{app}\img"; Flags: ignoreversion; -Source: "..\img\OlympusLogoFinal_4k.png"; DestDir: "{app}\img"; Flags: ignoreversion; - -Source: "..\LEGAL.txt"; DestDir: "{app}"; Flags: ignoreversion; - -[Run] -Filename: "{app}\client\install.bat"; Description: "Installing node.js modules, this may take some time..."; Tasks: installmodules; -Filename: "{app}\manager\install.bat"; Description: "Installing node.js modules, this may take some time..."; Tasks: installmodules; -Filename: "{app}\manager\manager.vbs"; WorkingDir: "{app}\manager"; Description: "Launch the Olympus manager"; Flags: postinstall shellexec; - -[Icons] -Name: "{userdesktop}\DCS Olympus Manager"; Filename: "{app}\manager\manager.vbs"; Tasks: desktopicon; IconFilename: "{app}\img\olympus_configurator.ico"; -Name: "{app}\DCS Olympus Manager"; Filename: "{app}\manager\manager.vbs"; IconFilename: "{app}\img\olympus_configurator.ico"; - -[UninstallDelete] -Type: filesandordirs; Name: "{app}" - diff --git a/manager/.vscode/launch.json b/manager/.vscode/launch.json index 064d058c..6de9ec52 100644 --- a/manager/.vscode/launch.json +++ b/manager/.vscode/launch.json @@ -4,10 +4,18 @@ { "type": "node", "request": "launch", - "name": "Launch Program", + "name": "Start", + "runtimeExecutable": "npm", + "runtimeArgs": [ "start" ] + }, + { + "type": "node", + "request": "launch", + "name": "Debug from package", "runtimeExecutable": "npm", "runtimeArgs": [ "start" ], - "port": 9229 + "preLaunchTask": "mirror-package", + "cwd": "${workspaceFolder}\\..\\package\\manager" } ] } \ No newline at end of file diff --git a/client/.vscode/tasks.json b/manager/.vscode/tasks.json similarity index 72% rename from client/.vscode/tasks.json rename to manager/.vscode/tasks.json index ee945bcf..7e89e91f 100644 --- a/client/.vscode/tasks.json +++ b/manager/.vscode/tasks.json @@ -4,9 +4,9 @@ "version": "2.0.0", "tasks": [ { - "label": "server", + "label": "mirror-package", "type": "shell", - "command": "npm run debug", + "command": "./scripts/mirror-package.bat", "isBackground": true } ] diff --git a/manager/ejs/camera.ejs b/manager/ejs/camera.ejs new file mode 100644 index 00000000..ba6d3748 --- /dev/null +++ b/manager/ejs/camera.ejs @@ -0,0 +1,25 @@ + +
    +
    +
    + Step <%= instances.length === 1? "5": "6" %> of <%= instances.length === 1? "5": "6" %> +
    +
    + Do you want to install the camera control plugin? +
    +
    + The camera control plugin allows you to control the camera position in DCS from Olympus.
    + It is necessary to install it in DCS even if you plan to use Olympus on a remote machine via your browser. +
    +
    +
    +
    + Install +
    +
    + Do not install +
    +
    +
    diff --git a/manager/ejs/connections.ejs b/manager/ejs/connections.ejs new file mode 100644 index 00000000..5c33209c --- /dev/null +++ b/manager/ejs/connections.ejs @@ -0,0 +1,60 @@ + +
    +
    +
    + Step <%= instances.length === 1? "3": "4" %> of <%= instances.length === 1? "5": "6" %> +
    +
    + Manually set Olympus port and address settings +
    +
    + Please note: you may be required to allow these ports through your firewall and modem/router via port + forwarding.
    + Otherwise, others may not be able to connect to Olympus. +
    +
    +
    +
    + Frontend port + + +
    + " + onchange="signal('onFrontendPortChanged', this.value)"> + +
    + Port already in use +
    +
    +
    +
    + Backend port + + +
    + " + onchange="signal('onBackendPortChanged', this.value)"> + +
    + Port already in use +
    +
    +
    +
    + +
    Enable direct backend API connection + +
    +
    +
    + Note: if you enable direct backend API connection, you will be required to run DCS as admin or run the netsh + command for others to connect. Leave unchecked if you don't know what this is.
    See the Olympus + documentation for more details. +
    +
    +
    \ No newline at end of file diff --git a/manager/ejs/connectionsType.ejs b/manager/ejs/connectionsType.ejs new file mode 100644 index 00000000..3d9a67ed --- /dev/null +++ b/manager/ejs/connectionsType.ejs @@ -0,0 +1,25 @@ + +
    +
    +
    + Step <%= instances.length === 1? "2": "3" %> of <%= instances.length === 1? "5": "6" %> +
    +
    + Do you want to set port and address settings? +
    +
    + We can automatically set port and address settings for you, or you can set them manually.
    + If you don't have a good understanding of how Olympus works, we recommend the auto apply settings option. +
    +
    +
    +
    + Auto apply settings +
    +
    + Manually set +
    +
    +
    diff --git a/manager/ejs/expertsettings.ejs b/manager/ejs/expertsettings.ejs new file mode 100644 index 00000000..fc44d79b --- /dev/null +++ b/manager/ejs/expertsettings.ejs @@ -0,0 +1,85 @@ + +
    +
    +
    + Edit Olympus instance +
    +
    + Please note: you may be required to allow these ports through your firewall and modem/router via port forwarding.
    + Otherwise, others may not be able to connect to Olympus. +
    +
    +
    +
    +
    + Game Master Password + + "> +
    +
    + Blue Commander Password + + "> +
    +
    + Red Commander Password + + "> +
    +
    " style="color: var(--offwhite); font-size: var(--normal); color: var(--lightgray);"> + Note: to keep the old passwords, click Next without editing any value. +
    +
    +
    +
    + Frontend port + + +
    + " + onchange="signal('onFrontendPortChanged', this.value)"> + +
    + Port already in use +
    +
    +
    +
    + Backend port + + +
    + " + onchange="signal('onBackendPortChanged', this.value)"> + +
    + Port already in use +
    +
    +
    +
    + +
    Enable direct backend API connection + +
    +
    +
    + +
    Enable camera control plugin + +
    +
    +
    +
    +
    diff --git a/manager/ejs/folder.ejs b/manager/ejs/folder.ejs new file mode 100644 index 00000000..2bd0e181 --- /dev/null +++ b/manager/ejs/folder.ejs @@ -0,0 +1,36 @@ + +
    +
    + <% if (instances.length > 0) { %> +
    + Step 1 of <%= instances.length === 1? "5": "6" %> +
    +
    + Which DCS instance you want to add Olympus to? +
    +
    + Olympus is added to DCS instances individually, and will only work for that specific instance.
    + You can have Olympus installed across multiple DCS instances. Re-run in the install wizard to add Olympus to another DCS install. +
    + <% } else { %> + + No DCS installs detected + + + Please ensure you have DCS installed correctly.
    + Olympus cannot be added unless there is a DCS Saved Games folder on your computer.

    + If you are still having issues, try re-installing DCS and Olympus

    + If DCS is installed but Olympus is failing to detect it, you can add it manually.
    See the troubleshooting guide for more info.
    +
    + <% } %> +
    +
    + <% for (var i = 0; i < instances.length; i++) { %> +
    + <%= instances[i].name %> +
    + <% } %> +
    +
    diff --git a/manager/ejs/instanceDiv.ejs b/manager/ejs/instanceDiv.ejs deleted file mode 100644 index fe3aeb9e..00000000 --- a/manager/ejs/instanceDiv.ejs +++ /dev/null @@ -1,68 +0,0 @@ -
    -
    -
    - <%= folder %> -
    -
    - Detected .dll version: "><%= version %>
    - Available .dll version: <%= newVersion %> -
    -
    - - - - - - - - - - - - - -
    -
    -
    Client port
    - " min="1023" max="65535" <%= !installed? "disabled": "" %> tabindex="<%= index %>"> - -
    -
    -
    -
    Game Master password
    - tabindex="<%= index + 3 %>"> - -
    -
    -
    -
    Backend port
    - " min="1023" max="65535" <%= !installed? "disabled": "" %> tabindex="<%= index + 1 %>"> - -
    -
    -
    -
    Blue Commander password
    - tabindex="<%= index + 4 %>"> - -
    -
    -
    -
    Backend address
    - " min="1023" max="65535" <%= !installed? "disabled": "" %> tabindex="<%= index + 2 %>"> - -
    -
    -
    -
    Red Commander password
    - tabindex="<%= index + 5 %>"> - -
    -
    -
    - - - - -
    -
    -
    \ No newline at end of file diff --git a/manager/ejs/instances.ejs b/manager/ejs/instances.ejs new file mode 100644 index 00000000..4c3d707b --- /dev/null +++ b/manager/ejs/instances.ejs @@ -0,0 +1,122 @@ + +
    + <% if (state === 'INSTALL') { %> +
    "> +
    Olympus installed successfully in + <%= activeInstance !== undefined? activeInstance["name"]: "" %>!
    +
    +
    "> +
    An error occurred while installing Olympus in + <%= activeInstance !== undefined? activeInstance["name"]: "" %>
    +
    + <% } else if (state === 'EDIT') {%> +
    "> +
    Olympus settings updated for + <%= activeInstance !== undefined? activeInstance["name"]: "" %>!
    +
    +
    "> +
    An error occurred while updating Olympus settings for + <%= activeInstance !== undefined? activeInstance["name"]: "" %>
    +
    + <% } else {%> +
    "> +
    Olympus removed successfully from + <%= activeInstance !== undefined? activeInstance["name"]: "" %>!
    +
    +
    "> +
    An error occurred while removing Olympus settings from + <%= activeInstance !== undefined? activeInstance["name"]: "" %>
    +
    + <% } %> + +
    +
    + <% if (instances.length > 0) { %> + + View and manage installs + + + The following DCS installations have been identified.
    You can start an Olympus server, modify settings and uninstall below. +
    + <% } else { %> + + No DCS installs detected + + + Please ensure you have DCS installed correctly.
    + Olympus cannot be added unless there is a DCS Saved Games folder on your computer.

    + If you are still having issues, try re-installing DCS and Olympus

    + If DCS is installed but Olympus is failing to detect it, you can add it manually.
    See the troubleshooting guide for more info.
    +
    + <% } %> +
    + +
    +
    + <% for (let i = 0; i < instances.length; i++) {%> +
    +
    + <%= instances[i].name %> + + <%= instances[i].folder %> + +
    +
    ACTIVE
    +
    OFFLINE
    +
    CONNECTED
    +
    DISCONNECTED
    +
    FPS: 0
    +
    Load: 0
    +
    +
    + +
    + + + <%= instances[i].installed? (instances[i].error? 'Corrupted/outdated Olympus installation': 'Olympus installed'): 'Olympus not installed' %> + + +
    +
    +
    Frontend port
    +
    <%= instances[i].installed? instances[i].frontendPort: "N/A" %>
    +
    +
    +
    Backend port
    +
    <%= instances[i].installed? instances[i].backendPort: "N/A" %>
    +
    +
    +
    Backend address
    +
    <%= instances[i].installed? instances[i].backendAddress: "N/A" %>
    +
    +
    +
    +
    +
    + Start Olympus +
    +
    Start server
    +
    Start client
    +
    +
    + +
    Edit settings
    +
    Install Olympus
    +
    Uninstall Olympus
    +
    Open in browser
    +
    Stop Olympus
    +
    + +
    + <% } %> +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/manager/ejs/menu.ejs b/manager/ejs/menu.ejs new file mode 100644 index 00000000..999fb28c --- /dev/null +++ b/manager/ejs/menu.ejs @@ -0,0 +1,100 @@ + +
    +
    +
    + DCS OLYMPUS +
    +
    + INSTALL WIZARD AND MANAGER +
    +
    + Using this manager, you can install Olympus, update settings, and view and manage instances +
    +
    + +
    \ No newline at end of file diff --git a/manager/ejs/passwords.ejs b/manager/ejs/passwords.ejs new file mode 100644 index 00000000..c4ad8ca2 --- /dev/null +++ b/manager/ejs/passwords.ejs @@ -0,0 +1,40 @@ + +
    +
    +
    + Step <%= instances.length === 1? "4": "5" %> of <%= instances.length === 1? "5": "6" %> +
    +
    + Enter your passwords for Olympus +
    +
    + When logging into Olympus, these passwords will let you access the different roles.
    + Game Master is the default and is used as a global commander. The other two are used as a part of the RTS mode. +
    +
    +
    +
    + Game Master Password + + "> +
    +
    + Blue Commander Password + + "> +
    +
    + Red Commander Password + + "> +
    +
    + Note: to keep the old passwords, click Next without editing any value. +
    +
    +
    diff --git a/manager/ejs/popup.ejs b/manager/ejs/popup.ejs deleted file mode 100644 index 37258fa9..00000000 --- a/manager/ejs/popup.ejs +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/manager/ejs/result.ejs b/manager/ejs/result.ejs new file mode 100644 index 00000000..03a73053 --- /dev/null +++ b/manager/ejs/result.ejs @@ -0,0 +1,124 @@ + +
    +
    +
    Olympus successfully added to <%= activeInstance["name"] %>!
    +
    See the DCS Olympus Wiki for more information on how to use Olympus and for troubleshooting issues. You may now close the installer.
    +
    +
    +
    An error occurred while adding Olympus to <%= activeInstance["name"] %>
    +
    See the manager log located in <%= logLocation %> for more information.
    +
    +
    +
    + How to launch Olympus +
    +
    + To launch Olympus, there are shortcuts available on the desktop and in the <%= activeInstance["name"] %> folder under Saved Games. +
    + <% if (activeInstance["installationType"] === "singleplayer") { %> +
    +
    + +
    + Launch the Olympus Client via the shortcut on your desktop or in <%= activeInstance["name"] %>. +
    +
    + +
    + +
    + Launch DCS, load a mission and unpause the game. Enjoy! +
    +
    +
    +
    + Alternatively, you can run the Olympus Server instead and visit in a web browser (Google Chrome recommended) to replace the first step above. +
    + <% } else { %> +
    +
    + +
    + Launch the Olympus Server via the shortcut on your desktop or in <%= activeInstance["name"] %>. +
    +
    + +
    + +
    + To access Olympus remotely visit in a web browser (Google Chrome recommended). +
    +
    + +
    + +
    + Launch DCS, load a mission and unpause the game. Enjoy! +
    +
    +
    +
    + To access Olympus from this PC, you need to visit in a web browser (Google Chrome recommended) instead. +
    + <% } %> +
    + + +
    \ No newline at end of file diff --git a/manager/ejs/settings.ejs b/manager/ejs/settings.ejs new file mode 100644 index 00000000..40b7ab08 --- /dev/null +++ b/manager/ejs/settings.ejs @@ -0,0 +1,89 @@ + +
    +
    + Back to menu +
    + <% if (state === 'EDIT') {%> +
    "> +
    Olympus settings updated for + <%= activeInstance !== undefined? activeInstance["name"]: "" %>!
    +
    +
    "> +
    An error occurred while updating Olympus settings for + <%= activeInstance !== undefined? activeInstance["name"]: "" %>
    +
    + <% } else {%> +
    "> +
    Olympus removed successfully from + <%= activeInstance !== undefined? activeInstance["name"]: "" %>!
    +
    +
    "> +
    An error occurred while removing Olympus settings from + <%= activeInstance !== undefined? activeInstance["name"]: "" %>
    +
    + <% } %> +
    +
    + <% if (instances.some(instance => instance.installed)) { %> + + Change settings + + + Here you can see the DCS instances on your computer that have Olympus installed.
    + You can edit settings and uninstall Olympus from this screen. +
    + <% } else { %> + + No Olympus installs detected + + + Use the Add Olympus option in the main manu to install Olympus in your DCS instance.
    + If you have more than one DCS instance, you will need to add Olympus to each one of them. +
    + <% } %> +
    +
    +
    + <% for (let i = 0; i < instances.length; i++) {%> + <% if (instances[i].installed) { %> +
    +
    + <%= instances[i].name %> + <%= instances[i].folder %> +
    + + <%= instances[i].installed? (instances[i].error? 'Corrupted/outdated Olympus installation': 'Olympus installed'): 'Olympus not installed' %> + +
    +
    +
    Frontend port
    +
    <%= instances[i].installed? instances[i].frontendPort: "N/A" %>
    +
    +
    +
    Backend port
    +
    <%= instances[i].installed? instances[i].backendPort: "N/A" %>
    +
    +
    +
    Backend address
    +
    <%= instances[i].installed? instances[i].backendAddress: "N/A" %>
    +
    +
    + +
    +
    +
    Edit settings
    +
    Uninstall Olympus
    +
    +
    + <% } %> + <% } %> +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/manager/ejs/type.ejs b/manager/ejs/type.ejs new file mode 100644 index 00000000..beb9a206 --- /dev/null +++ b/manager/ejs/type.ejs @@ -0,0 +1,25 @@ + +
    +
    +
    + Step <%= instances.length === 1? "1": "2" %> of <%= instances.length === 1? "5": "6" %> +
    +
    + Do you want to add Olympus for singleplayer or multiplayer? +
    +
    + Select singleplayer if you only want to play locally on your own computer.
    + Select multiplayer if you want Olympus to be useable over the internet from a different computer, or this instance is a dedicated server. +
    +
    +
    +
    + Singleplayer +
    +
    + Multiplayer +
    +
    +
    diff --git a/manager/ejs/welcome.ejs b/manager/ejs/welcome.ejs new file mode 100644 index 00000000..3ae9a2cd --- /dev/null +++ b/manager/ejs/welcome.ejs @@ -0,0 +1,68 @@ + +
    +
    + Do you want to use the Olympus Manager in Basic or Expert mode? +
    +
    + Basic mode is recommended for most users.
    + Expert mode is for those who know how Olympus works or for server owners. +
    +
    + You can change this setting at any time. +
    +
    + Basic mode +
    +
    + Expert mode +
    +
    \ No newline at end of file diff --git a/manager/ejs/wizard.ejs b/manager/ejs/wizard.ejs new file mode 100644 index 00000000..5f069df7 --- /dev/null +++ b/manager/ejs/wizard.ejs @@ -0,0 +1,87 @@ + +
    +
    + <%= state === 'INSTALL'? "Cancel install": "Cancel editing" %> +
    +
    + +
    + +
    \ No newline at end of file diff --git a/manager/icons/arrow-right-solid.svg b/manager/icons/arrow-right-solid.svg new file mode 100644 index 00000000..418e8ad4 --- /dev/null +++ b/manager/icons/arrow-right-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/check-solid-background.svg b/manager/icons/check-solid-background.svg new file mode 100644 index 00000000..183217d9 --- /dev/null +++ b/manager/icons/check-solid-background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/check-solid-green.svg b/manager/icons/check-solid-green.svg new file mode 100644 index 00000000..96b80e24 --- /dev/null +++ b/manager/icons/check-solid-green.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/chevron-down-solid.svg b/manager/icons/chevron-down-solid.svg new file mode 100644 index 00000000..46aeebb0 --- /dev/null +++ b/manager/icons/chevron-down-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/chevron-left-solid.svg b/manager/icons/chevron-left-solid.svg new file mode 100644 index 00000000..288a94f7 --- /dev/null +++ b/manager/icons/chevron-left-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/chevron-right-solid.svg b/manager/icons/chevron-right-solid.svg new file mode 100644 index 00000000..c0b6539c --- /dev/null +++ b/manager/icons/chevron-right-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/chrome.svg b/manager/icons/chrome.svg new file mode 100644 index 00000000..ee2a9807 --- /dev/null +++ b/manager/icons/chrome.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/circle-question-regular.svg b/manager/icons/circle-question-regular.svg new file mode 100644 index 00000000..1abea876 --- /dev/null +++ b/manager/icons/circle-question-regular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/discord.svg b/manager/icons/discord.svg new file mode 100644 index 00000000..00c6254a --- /dev/null +++ b/manager/icons/discord.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/manager/icons/display-solid.svg b/manager/icons/display-solid.svg new file mode 100644 index 00000000..73243fa9 --- /dev/null +++ b/manager/icons/display-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/gamepad-solid.svg b/manager/icons/gamepad-solid.svg new file mode 100644 index 00000000..79622b10 --- /dev/null +++ b/manager/icons/gamepad-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/github.svg b/manager/icons/github.svg new file mode 100644 index 00000000..013cde4f --- /dev/null +++ b/manager/icons/github.svg @@ -0,0 +1,3 @@ + + + diff --git a/manager/icons/olympus_white.png b/manager/icons/olympus_white.png new file mode 100644 index 00000000..7fd37a2b Binary files /dev/null and b/manager/icons/olympus_white.png differ diff --git a/manager/icons/server-solid.svg b/manager/icons/server-solid.svg new file mode 100644 index 00000000..ac7da489 --- /dev/null +++ b/manager/icons/server-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/spinner-solid.svg b/manager/icons/spinner-solid.svg new file mode 100644 index 00000000..061f1932 --- /dev/null +++ b/manager/icons/spinner-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/square-check-solid.svg b/manager/icons/square-check-solid.svg new file mode 100644 index 00000000..9be69184 --- /dev/null +++ b/manager/icons/square-check-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/square-regular.svg b/manager/icons/square-regular.svg new file mode 100644 index 00000000..88fabee2 --- /dev/null +++ b/manager/icons/square-regular.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/triangle-exclamation-solid-background.svg b/manager/icons/triangle-exclamation-solid-background.svg new file mode 100644 index 00000000..e3b5d51b --- /dev/null +++ b/manager/icons/triangle-exclamation-solid-background.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/triangle-exclamation-solid-orange.svg b/manager/icons/triangle-exclamation-solid-orange.svg new file mode 100644 index 00000000..cf198f5c --- /dev/null +++ b/manager/icons/triangle-exclamation-solid-orange.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/triangle-exclamation-solid.svg b/manager/icons/triangle-exclamation-solid.svg new file mode 100644 index 00000000..3b18b9a9 --- /dev/null +++ b/manager/icons/triangle-exclamation-solid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/manager/icons/youtube.svg b/manager/icons/youtube.svg new file mode 100644 index 00000000..c8718c4c --- /dev/null +++ b/manager/icons/youtube.svg @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/manager/index.html b/manager/index.html index 0bed270c..19de837d 100644 --- a/manager/index.html +++ b/manager/index.html @@ -20,23 +20,37 @@
    -